C++标准是否允许非模板类的模板构造函数?

sas*_*alm 6 c++ templates constructor

我想用模板构造函数创建一个类:

class foo
{
    template <class T> foo(T var) {}
};
Run Code Online (Sandbox Code Playgroud)

这在VS2008中编译,但我不知道它是否是非标准扩展,或者C++标准是否允许它.

小智 6

在[temp.mem]中:

可以在类或类模板中声明模板; 这样的模板称为成员模板.

构造函数是成员,并且不明确禁止它们使它们成为模板.

例如,std::shared_ptr有许多模板构造函数.