[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;
}

  

posted @ 2023-02-13 12:36  KYZH  阅读(761)  评论(0编辑  收藏  举报