#include <iostream>
using namespace std;
template<class X> struct Test {
static void run (void) {
cout << "default" <<endl;
}
};
template<class Z> struct Test<Z&&> {
static void run (void) {
cout << "&&" << endl;
}
};
int main() {
int dummy = 42;
int moved = 21;
int && rv = move (moved);
int & lv = dummy;
int q = 42;
int * qptr = &q;
auto && wtf = &q;
auto && wtf2 = qptr;
Test<decltype (rv)>:: run ();
Test<decltype (lv)>:: run ();
Test<decltype (wtf)>:: run();
Test<decltype (wtf2)>:: run ();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8Y2xhc3MgWD4gc3RydWN0IFRlc3QgewogIHN0YXRpYyB2b2lkIHJ1biAodm9pZCkgewogICAgY291dCA8PCAiZGVmYXVsdCIgPDxlbmRsOwogIH0KfTsKdGVtcGxhdGU8Y2xhc3MgWj4gc3RydWN0IFRlc3Q8WiYmPiB7CiAgc3RhdGljIHZvaWQgcnVuICh2b2lkKSB7CiAgICBjb3V0IDw8ICImJiIgPDwgZW5kbDsKICB9Cn07CgppbnQgbWFpbigpIHsKCWludCBkdW1teSA9IDQyOwogICAgaW50IG1vdmVkID0gMjE7CiAgICBpbnQgJiYgcnYgPSBtb3ZlIChtb3ZlZCk7CiAgICBpbnQgJiBsdiA9IGR1bW15OwoKICAgIGludCBxID0gNDI7CiAgICBpbnQgKiBxcHRyID0gJnE7CiAgICBhdXRvICYmIHd0ZiA9ICZxOwogICAgYXV0byAmJiB3dGYyID0gcXB0cjsKCiAgICBUZXN0PGRlY2x0eXBlIChydik+OjogcnVuICgpOwogICAgVGVzdDxkZWNsdHlwZSAobHYpPjo6IHJ1biAoKTsKICAgIFRlc3Q8ZGVjbHR5cGUgKHd0Zik+OjogcnVuKCk7CiAgICBUZXN0PGRlY2x0eXBlICh3dGYyKT46OiBydW4gKCk7CglyZXR1cm4gMDsKfQ==