C++结构模板变量快捷方式定义不起作用


template <class T>
Struct st
{
... 
} a<T>;

不起作用 althogh 非模板快捷方式如何正确执行模板 shorycut?

C++语法通常允许您执行type name;来声明变量,其中type是类型,name是名称。 语法struct foo { }被语法视为一种类型,这使得struct foo { } bar;合法的(声明名为foo的类型和名为barfoo类型的变量(。

但是,在您的示例中,st实际上不是一个类型,而是一个类型模板。

类型模板本身并不是类型;它们是编译器按需自动创建类型的"配方"。st<int>是一种类型,但st本身不是。

正因为如此,快捷方式在语法上不正确,当你想到它时是荒谬的。 不能声明非类型的变量。 解决方法是干脆不使用快捷方式并单独声明变量。

最新更新