8

我知道在 C++ 中我们可以这样做:

class A {} a;

这将创建一个A名为的类型的对象a。它相当于:

A a;

我想知道如何使用模板来做到这一点。例如:

template <typename T> struct N {} <int> n;

这不会编译,但你明白了。如何将模板参数指定给与其类定义内联创建的对象?这甚至可能吗?

4

3 回答 3

2

根据标准,关闭后的东西}称为an init-declarator-list

14.3 明确禁止在模板类声明中使用它们:

在模板声明、显式特化或显式实例化中,声明中的 init-declarator-list 最多应包含一个声明符。当这样的声明用于声明类模板时,不允许使用任何声明符。

于 2012-12-24T17:42:48.823 回答
1

我不认为你能做到这一点。根据我的理解,你提到的结构和类的形式是为了与 c 向后兼容而保留的——你可以在结构和类中做到这一点。
好主意,不过:)

于 2012-12-24T17:39:09.910 回答
1

即使所有模板参数都有默认值,您也不能从模板定义中声明变量。

这也是一个错误:

template <typename T = int> struct N {} n;
于 2012-12-24T17:42:47.697 回答