template <class T>
Struct st
{
...
} a<T>;
不起作用 althogh 非模板快捷方式如何正确执行模板 shorycut?
C++语法通常允许您执行type name;
来声明变量,其中type
是类型,name
是名称。 语法struct foo { }
被语法视为一种类型,这使得struct foo { } bar;
合法的(声明名为foo
的类型和名为bar
的foo
类型的变量(。
但是,在您的示例中,st
实际上不是一个类型,而是一个类型模板。
类型模板本身并不是类型;它们是编译器按需自动创建类型的"配方"。st<int>
是一种类型,但st
本身不是。
正因为如此,快捷方式在语法上不正确,当你想到它时是荒谬的。 不能声明非类型的变量。 解决方法是干脆不使用快捷方式并单独声明变量。