我想为我的模板类提供交换功能。这是一个简化版本:
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);
是否可以使用我首先描述的模板类提供交换功能?
答案 0 :(得分:2)
将swap
功能设为模板:
template<int size2, typename...DataTypes2>
void swap(ExampleClass<size2, DataTypes2...>& _right) { ... }
当然,将正确的参数传递给data.swap()
(你不知道)。