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