为什么不能用结构定义模板?

Luc*_*ore 3 c++ templates

非常简单:

template <class T>
void foo() {}  //compiles

template <struct T>
void goo() {}  //doesn't
Run Code Online (Sandbox Code Playgroud)

为什么?

ken*_*ytm 6

class只是一个表示该T类型的关键字.它实际上并不意味着T必须是一个阶级.(例如你可以打电话foo<int>().)

使用class关键字是因为typename添加模板功能时不存在关键字.请参阅c ++,typename和class中的模板.