【发布时间】:2018-01-28 16:54:23
【问题描述】:
我想为我的模板类提供一个交换功能。这是一个简化版:
template <int size, typename...DataTypes>
class ExampleClass
{
public:
ExampleClass() : data(size) {}
void swap(ExampleClass& _Right)
{
data.swap(_Right);
}
protected:
std::vector<std::tuple<Types...>> data;
}
在这种情况下交换功能不起作用:
ExampleClass<1,int,float> ec1;
ExampleClass<2,int,float> ec2;
ec1.swap(ec2);
如果我在不使用此类的情况下交换这些元组向量,它可以工作:
std::vector<std::tuple<int, float> data1(2);
std::vector<std::tuple<int, float> data2(3);
data1.swap(data2);
是否可以使用我首先描述的模板类提供交换功能?
【问题讨论】:
-
与你的问题无关,但我建议你阅读What are the rules about using an underscore in a C++ identifier?然后你就会知道为什么
_Right不是一个好名字。
标签: c++ c++11 variadic-templates swap template-classes