Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
class MyStruct
{
public:
MyStruct(int value) : _value(value){}
private:
// prevent from copying, assigning or moving
MyStruct(const MyStruct & rhs){}
MyStruct& operator=(const MyStruct&){}
MyStruct(MyStruct&& rval)
{
_value = rval._value;
rval._value = 0;
}
int _value;
};
const MyStruct & foo()
{
return MyStruct(42);
}
int main()
{
auto & s = foo();
return 0;
}
// VS2010, /W3
// warning C4172: returning address of local variable or temporary
struct s1
{
s1() {}
s1(const s1&& other) { std::cout << "moved s1\n"; }
s1(const s1& other) { std::cout << "copied s1\n"; }
};
struct s2
{
s2() {}
s2(s2&& other) { std::cout << "moved s2\n"; }
s2(const s2& other) { std::cout << "copied s2\n"; }
};
s1 f1()
{
const s1 r;
return std::move(r);
}
s2 f2()
{
const s2 r;
return std::move(r);
}
int main()
{
std::cout << "hello\n";
s1 v1= f1();
s2 v2 = f2();
}
Return by value и const variables в C++11