gpt4 book ai didi

c++ - 如何使用可变模板参数为元组专门化类模板?

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:36 25 4
gpt4 key购买 nike

如何特化元组的类模板?我尝试以下但失败了。我正在使用支持可变模板参数的 VC 编译器 2012 年 11 月 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 编译器错误。如果是这样,如何解决?

最佳答案

这是一个编译器错误。作为变通方法,只需添加 2 参数特化

template<class Arg0, class Arg1>
struct A< std::tuple<Arg0, Arg1> >
{
void g() {}
};

Live Example .

是的,您必须为您的代码可能使用的尽可能多的参数执行此操作。或者,您可以尝试 VS 2013 RC这可能已经修复了这个错误。

更新:我现在看到你问了a separate question关于解决方法。那里发布了相同的解决方案。

关于c++ - 如何使用可变模板参数为元组专门化类模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19150057/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com