This piece of code
#include <tuple>
struct Foo
{
Foo(const int& value):value_(value){}
//Foo(const Foo&)=delete; // delete copy constructor
int value_;
};
int main()
{
std::tuple<Foo> tup(std::move(Foo(1)));
return 0;
}
works fine but if you delete the Foo
copy constructor it fails with the following compile error: use of deleted function Foo::Foo(const Foo&)
.
But, since I am telling explicitly that the object can be moved, why the std::tuple
constructor uses the Foo
copy constructor instead of its moving constructor? How can I enforce the std::tuple
to be constructed moving the Foo
instance instead of copying it?
Aucun commentaire:
Enregistrer un commentaire