人到中年有点甜
const ID_ id 中的 const 会被编译器忽略掉, 可以不写(这个不算错误).这是一个最基本的Error: 类定义 后面 要有 ; 结尾. ID_ 既然是 int 的 alias, 那 类C 就是一个 非类型实参的类模板. 也就是说, C<> 的 <> 中应该是个 int的数字, 不能是 int 或者 ID_, 或者 其它类型.对于 C++98 C++03 而言, vector<C<5> > 中最后面的 两个 大于号之间 必须要有至少一个空格. 这是语法规定. 除非你的编译器支持 C++11, 而且你在编译的时候 指定了编译选项 1-std=c++14或者1-std=c++11最后, 一个修改后的版本:#include<vector>typedef int ID_;template <ID_ id>class C{ public: void say() {};};//typedef std::vector<C> CVec;//报错//typedef std::vector<C<ID_>> CVec;//报错//typedef std::vector<C<int>> CVec;//报错typedef std::vector<C<1> > CVec; // 注意: 这三个是不同的类型typedef std::vector<C<2> > CVec; // 注意: 这三个是不同的类型typedef std::vector<C<999> > CVec; // 注意: 这三个是不同的类型int main(){ CVec vec; return 0;}