6

考虑这两个重载:

template <typename T> void foo(T &) {}
template <typename T> void foo(T &&) {}

它们可能模棱两可吗?

以下代码使用 Clang 3.4 编译,但使用 GCC 4.8 失败,这表明重载(第一个带有T = int,第二个带有T = int&)是模棱两可的。

int main()
{
    int n = 10;
    foo(n);
}

我意识到“绑定到引用”在过载解决方面是“完全匹配”,所以我认为问题归结为其中一个扣除T = int/T = int&是否优于另一个,或者它们是否同样好。

4

0 回答 0