#include <iostream>
#include <type_traits>
using namespace std;
class Bar
{
public:
Bar(){cout<<__PRETTY_FUNCTION__<<endl;}
~Bar(){cout<<__PRETTY_FUNCTION__<<endl;}
Bar(const Bar&){cout<<__PRETTY_FUNCTION__<<endl;}
Bar(Bar&&){cout<<__PRETTY_FUNCTION__<<endl;}
};
class Foo
{
public:
Foo(){}
~Foo() = default;
// Foo(Foo&& ) = default;
Bar b;
};
int main() {
Foo f;
Foo f2 = std::move(f);
cout<<std::is_move_constructible<Foo>::value<<endl;
cout<<std::is_copy_constructible<Foo>::value<<endl;
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIEJhcgp7CnB1YmxpYzoKICAgIEJhcigpe2NvdXQ8PF9fUFJFVFRZX0ZVTkNUSU9OX188PGVuZGw7fQogICAgfkJhcigpe2NvdXQ8PF9fUFJFVFRZX0ZVTkNUSU9OX188PGVuZGw7fQogICAgQmFyKGNvbnN0IEJhciYpe2NvdXQ8PF9fUFJFVFRZX0ZVTkNUSU9OX188PGVuZGw7fQogICAgQmFyKEJhciYmKXtjb3V0PDxfX1BSRVRUWV9GVU5DVElPTl9fPDxlbmRsO30KfTsKY2xhc3MgRm9vCnsKcHVibGljOgogICAgRm9vKCl7fQogICAgfkZvbygpID0gZGVmYXVsdDsKICAgLy8gRm9vKEZvbyYmICkgPSBkZWZhdWx0OwogICAgCiAgICBCYXIgYjsKfTsKaW50IG1haW4oKSB7CiAgICAKICAgIEZvbyBmOwogICAgRm9vIGYyID0gc3RkOjptb3ZlKGYpOwogICAgCiAgICBjb3V0PDxzdGQ6OmlzX21vdmVfY29uc3RydWN0aWJsZTxGb28+Ojp2YWx1ZTw8ZW5kbDsKICAgIGNvdXQ8PHN0ZDo6aXNfY29weV9jb25zdHJ1Y3RpYmxlPEZvbz46OnZhbHVlPDxlbmRsOwogICAgLy8geW91ciBjb2RlIGdvZXMgaGVyZQogICAgcmV0dXJuIDA7Cn0=