#include <iostream>
using namespace std;
class
{
public:
auto operator + () -> decltype(*this)
{
cout << "Unary plus\n";
return *this;
}
static void do_smth()
{
cout << "Static method\n";
}
void test(auto obj)
{
cout << "Argument\n";
}
} smth;
int main()
{
+smth;
decltype(smth) b;
+b;
decltype(b)::do_smth();
smth.test(b);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzCnsKcHVibGljOgoJYXV0byBvcGVyYXRvciArICgpIC0+IGRlY2x0eXBlKCp0aGlzKQoJewoJCWNvdXQgPDwgIlVuYXJ5IHBsdXNcbiI7CgkJcmV0dXJuICp0aGlzOwoJfQoJCglzdGF0aWMgdm9pZCBkb19zbXRoKCkKCXsKCQljb3V0IDw8ICJTdGF0aWMgbWV0aG9kXG4iOwoJfQoJCgl2b2lkIHRlc3QoYXV0byBvYmopCgl7CgkJY291dCA8PCAiQXJndW1lbnRcbiI7Cgl9Cn0gc210aDsKCmludCBtYWluKCkKewoJK3NtdGg7CglkZWNsdHlwZShzbXRoKSBiOwoJK2I7CglkZWNsdHlwZShiKTo6ZG9fc210aCgpOwoJc210aC50ZXN0KGIpOwoJCglyZXR1cm4gMDsKfQ==