[Error] a template declaration cannot appear at block scope
测试 C++11中 Alias Template 时出现出现报错
程序:
#include <iostream> #include <vector> using namespace std; int main() { template <typename T> using Vec = vector<T>; Vec<int> nums; nums.push_back(1); return 0; }
报错:
查阅相关资料,发现 C++标准有:
Template declarations are only permitted at global, namespace, or class scope.
表示 template 只能在全局,命名空间和类内声明。程序错误的将其声明在了函数内部。
修改为:
#include <iostream> #include <vector> using namespace std; template <typename T> using Vec = vector<T>; int main() { Vec<int> nums; nums.push_back(1); return 0; }