#include <iostream>
#include <type_traits>
using namespace std;
struct A
{
A(const A&) {}
};
struct B
{
B(const B&) {};
private:
B(B&&);
};
struct C
{
C(const C&) {};
C(C&&) = delete;
};
int main()
{
cout << boolalpha << is_move_constructible<A>::value << endl;
cout << boolalpha << is_move_constructible<B>::value << endl;
cout << boolalpha << is_move_constructible<C>::value << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgQQp7CglBKGNvbnN0IEEmKSB7fQp9OwoKc3RydWN0IEIKewoJQihjb25zdCBCJikge307CnByaXZhdGU6CglCKEImJik7Cn07CgpzdHJ1Y3QgQwp7CglDKGNvbnN0IEMmKSB7fTsKCUMoQyYmKSA9IGRlbGV0ZTsKfTsKCmludCBtYWluKCkgCnsKCWNvdXQgPDwgYm9vbGFscGhhIDw8IGlzX21vdmVfY29uc3RydWN0aWJsZTxBPjo6dmFsdWUgPDwgZW5kbDsKCWNvdXQgPDwgYm9vbGFscGhhIDw8IGlzX21vdmVfY29uc3RydWN0aWJsZTxCPjo6dmFsdWUgPDwgZW5kbDsKCWNvdXQgPDwgYm9vbGFscGhhIDw8IGlzX21vdmVfY29uc3RydWN0aWJsZTxDPjo6dmFsdWUgPDwgZW5kbDsKfQ==