#include <cstdio>

template <class t_any>
void check(const t_any &val)
{
std::puts("this is const left value.");
}

template <class t_any>
void check(t_any &&val)
{
std::puts("this is right value.");
}

int main(void)
{
check(100);

int x = 200;

check(x);

return 0;
}

GCC4.4.1で両方右辺値になるんだけどなんで?