函数模板参数T&和T &&是不明确的?

Ker*_* SB 6 c++ rvalue-reference overload-resolution c++11 universal-reference

考虑这两个重载:

template <typename T> void foo(T &) {}
template <typename T> void foo(T &&) {}
Run Code Online (Sandbox Code Playgroud)

它们可能含糊不清吗?

下面的代码用Clang 3.4编译,但是GCC 4.8失败了,它说过载(第一个带有T = int,第二个有T = int&)是不明确的.

int main()
{
    int n = 10;
    foo(n);
}
Run Code Online (Sandbox Code Playgroud)

我意识到"绑定到引用"在重载分辨率方面是一个"完全匹配",所以我想这个问题归结为一个推论T = int/ T = int&优于另一个,或者它们是否同样好.