忽略模板参数以提供交换功能

Ignore template argument to provide swap function

我想为我的模板提供交换功能 class。这是一个简化版本:

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);

如果我在不使用此 class 的情况下在外部交换那些元组向量,它会起作用:

std::vector<std::tuple<int, float> data1(2);
std::vector<std::tuple<int, float> data2(3);
data1.swap(data2);

是否可以使用我首先描述的模板 class 提供交换功能?

swap 函数设为模板:

template<int size2, typename...DataTypes2>
void swap(ExampleClass<size2, DataTypes2...>& _right) { ... }

当然还要将正确的参数传递给 data.swap()(你不知道)。