实际上可以说没有区别。
按 C++ 标准来说,template
template
但是这里有一个问题,结构体应该用 typename 还是 class? 结构体肯定不是基础数据类型,但也不是类。
所以实际情况是,template
但有一个特例,就是当 T 是一个类,而这个类又有子类(假设名为 innerClass) 时,应该用 template
typename T::innerClass myInnerObject;
这里的 typename 告诉编译器,T::innerClass 是一个类,程序要声明一个 T::innerClass 类的对象,而不是声明 T 的静态成员,而 typename 如果换成 class 则语法错误。