C++ 关于C+的基本问题+;模板

C++ 关于C+的基本问题+;模板,c++,templates,arm,C++,Templates,Arm,考虑一下这个过于简单的测试: class foo { public: foo(int i); template< typename T > foo(T); }; template<> foo::foo(int i) {} class-foo { 公众: foo(国际一级); 模板foo(T); }; 模板foo::foo(inti){} 现在,GCC很乐意在编译时接受这一点,但RVCT编译器会发出一个错误: test.cpp"

考虑一下这个过于简单的测试:

class foo
{
    public:
        foo(int i);
        template< typename T > foo(T);
};

template<> foo::foo(int i) {}
class-foo
{
公众:
foo(国际一级);
模板foo(T);
};
模板foo::foo(inti){}
现在,GCC很乐意在编译时接受这一点,但RVCT编译器会发出一个错误:

test.cpp", line 11: Error:  #792: "foo::foo(int)" is not an entity that can be explicitly specialized
 template<> foo::foo(int i) {}
test.cpp”,第11行:错误:#792:“foo::foo(int)”不是可以显式专门化的实体
模板foo::foo(inti){}
除非“为什么要这样做”,这是合法的C++(从学术的角度来看)< /P>
提前感谢

您正在尝试对
模板foo(T)
进行显式专门化,其中T=int

你真的想要这个吗

template<typename T> foo::foo(T) {
}
模板foo::foo(T){
}
---编辑---


只是要说明:“显式的专门化”在C++中是合法的,但是显然你的编译器不支持它(不管是在个别方法上,它可能在整个类上都有吗?)不认为这是问题。他在编译器上得到明显的专门化错误,显然不支持显式的专门化。我认为我回答了“这是合法的”和“为什么我会得到这个错误”。你说它是合法C++?我不认为我需要指定“显式的特化”。“是合法的,也许不是;但这就是问题所在;)只是想让你知道-compiles+在VS2010上运行良好它适合我。同时使用g++和VC++。