#include <iostream>
using namespace std;
struct MyType { MyType() { cout << __PRETTY_FUNCTION__ << endl; }};
MyType& MyType() { cout << __PRETTY_FUNCTION__ << endl; }
using MyType2 = struct MyType;
int main() {
// MyType t; <- error: expected ‘;’ before ‘t’
MyType();
struct MyType t;
struct MyType t1 = MyType();
struct MyType t2 = (struct MyType)::MyType();
struct MyType t3 = MyType2();
new(&t2) struct MyType();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3QgTXlUeXBlIHsgTXlUeXBlKCkgeyAgY291dCA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8IGVuZGw7IH19OwpNeVR5cGUmIE15VHlwZSgpIHsgY291dCA8PCBfX1BSRVRUWV9GVU5DVElPTl9fIDw8IGVuZGw7IH0KdXNpbmcgTXlUeXBlMiA9IHN0cnVjdCBNeVR5cGU7CmludCBtYWluKCkgewogIC8vIE15VHlwZSB0OyA8LSBlcnJvcjogZXhwZWN0ZWQg4oCYO+KAmSBiZWZvcmUg4oCYdOKAmQogIE15VHlwZSgpOwogIHN0cnVjdCBNeVR5cGUgdDsKICBzdHJ1Y3QgTXlUeXBlIHQxID0gTXlUeXBlKCk7CiAgc3RydWN0IE15VHlwZSB0MiA9IChzdHJ1Y3QgTXlUeXBlKTo6TXlUeXBlKCk7CiAgc3RydWN0IE15VHlwZSB0MyA9IE15VHlwZTIoKTsKICBuZXcoJnQyKSBzdHJ1Y3QgTXlUeXBlKCk7CiAgcmV0dXJuIDA7Cn0=