では、aaa()に次のようなoverloadがある場合は、「2」の方が呼び出されて、
#if の部分を 0 にすると、「1」が呼び出される?
だとすると、昔のC++では無かったような overloadの仕様かも?

T b;
aaa(b); // bは左辺値のつもり

void aaa(T&& a)
{
  puts("1, 右辺値参照、T&& に来たよ。");
}

#if 1
void aaa(T& a)
{
  puts("2, 左辺値参照、T& に来たよ。");
}
#endif