我知道在 C++ 中我们可以这样做:
class A {} a;
这将创建一个A
名为的类型的对象a
。它相当于:
A a;
我想知道如何使用模板来做到这一点。例如:
template <typename T> struct N {} <int> n;
这不会编译,但你明白了。如何将模板参数指定给与其类定义内联创建的对象?这甚至可能吗?
我知道在 C++ 中我们可以这样做:
class A {} a;
这将创建一个A
名为的类型的对象a
。它相当于:
A a;
我想知道如何使用模板来做到这一点。例如:
template <typename T> struct N {} <int> n;
这不会编译,但你明白了。如何将模板参数指定给与其类定义内联创建的对象?这甚至可能吗?
根据标准,关闭后的东西}
称为an init-declarator-list
。
14.3 明确禁止在模板类声明中使用它们:
在模板声明、显式特化或显式实例化中,声明中的 init-declarator-list 最多应包含一个声明符。当这样的声明用于声明类模板时,不允许使用任何声明符。
我不认为你能做到这一点。根据我的理解,你提到的结构和类的形式是为了与 c 向后兼容而保留的——你可以在结构和类中做到这一点。
好主意,不过:)
即使所有模板参数都有默认值,您也不能从模板定义中声明变量。
这也是一个错误:
template <typename T = int> struct N {} n;