如何为元组专门化一个类模板?我尝试以下但失败了。我正在使用VC Compiler Nov 2012 CTP,它支持可变参数模板参数。
template<class T>
struct A
{
void f() {}
};
template<class... Args>
struct A<tuple<Args...>>
{
void g() {}
};
我试试
A<tuple<int, float>> a;
a.g(); // error error C2039: 'g' : is not a member of
//'A<std::tuple<int,float,std::_Nil,std::_Nil,std::_Nil,std::_Nil,std::_Nil,std::_Nil>>
感谢yngum。它可能是VC编译器错误。如果是这样,如何解决?
答案 0 :(得分:1)
这是一个编译器错误。作为解决方法,只需添加2参数专业化
即可template<class Arg0, class Arg1>
struct A< std::tuple<Arg0, Arg1> >
{
void g() {}
};
是的,您必须为代码可能使用的参数执行此操作。或者,您可以尝试VS 2013 RC,这可能已经解决了这个问题。
更新:我现在看到您向a separate question询问了解决方法。那里发布了相同的解决方案。