有1.55版本中的boost元组移动语义,似乎应该有它,但是当我想编译以下内容时:
boost::tuple< A, int > t( boost::tuples::make_tuple(A(2), 3) );
//OR
boost::tuple<A,int> t(A(2),3);
其中类A
a有一个移动构造函数。
我收到以下错误:
/usr/local/include/boost/tuple/detail/tuple_basic.hpp|310|error:
use of deleted function 'A::A(const A&)'|
当然是因为我在这个类中定义了一个移动构造函数而没有复制构造函数!
A类示例:
class A{
public:
explicit A(int i){
std::cout << "Constructor "<< i <<std::endl;
for(int l = 0; l<i;l++){
vec.push_back(l);
}
};
A(A && ref): vec(std::move(ref.vec))
{
std::cout << "Move constructor"<<std::endl;
}
A & operator=(A && ref){
if(this != &ref){
vec = std::move(ref.vec);
}
std::cout << "Move assignment"<<std::endl;
return *this;
}
std::vector<int> vec;
};