#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;
}