C++标准是否允许为非模板类提供模板构造函数
Does the C++ standard allow a template constructor for a non-template class?
我想创建一个带有模板构造函数的类:
class foo
{
template <class T> foo(T var) {}
};
这是在VS2008中编译的,但我不知道它是一个非标准扩展,还是C++标准允许它
In〔temp.mem〕:
模板可以在类或类模板中声明;这样的模板称为成员模板。
构造函数是成员,并没有明确禁止将其作为模板。
例如,std::shared_ptr
有许多模板构造函数。
相关文章:
- 无论如何,我可以确定构造函数是否存在吗?
- 在对象构造期间,将指向尚未构造的子对象的指针传递给另一个子对象的构造函数是否危险?
- 构造函数是否有一种现代C++方法来了解其'container'类?
- 移动构造函数是否C++过时?
- 在 c++ 中将对象设置为等于同一类的构造函数是否有效?
- 具有默认值的单个参数构造函数是否与默认构造函数相同?
- 如何检测构造函数是否与抛出的析构函数无关
- 删除复制构造函数是否也会删除默认的复制/移动运算符?
- 构造函数是否unique_ptr初始化原始指针unique_ptr析构函数是否也删除关联的原始指针?
- 构造函数是否应该具有应用商店屏障?
- 将数据成员的指针传递给基类构造函数是否安全?
- 访问控制对于已删除的构造函数是否重要?
- 是否可以使用 EXPECT_CALL 来验证模拟对象的构造函数是否在某些时候调用成员函数?
- 让构造函数在其初始化列表中调用同一类的另一个构造函数是否有效
- 移动构造函数是否使shared_from_this无效
- 默认构造函数是否表示C 中的通用类型的零
- 没有参数的默认构造函数是否总是初始化变量?
- constexpr移动构造函数是否有意义
- 默认默认构造函数是否将变量初始化为零
- std::initializer_list私有构造函数是否从编译器那里得到非常特殊的处理