<分区>
以下代码对左值和右值对象使用返回类型推导(自动)和不同的方法。将两者结合起来时,gcc 4.9.2 似乎在重载解析方面存在问题:“重载 'f()' 的调用不明确”。
这是一个错误还是另一个奇怪的 C++ 极端情况? Clang 按预期接受它。
struct T {
auto f() & {
return int{0};
}
auto f() && {
return string{""};
}
};
void test_it() {
//Calling with L-value object. Fails with "call of overloaded 'f()' is ambiguous").
T t;
int s = t.f();
//Calling with R-value object. Fails with "call of overloaded 'f()' is ambiguous").
string i = T{}.f();
}
可以在此处使用在线编译器研究该示例:
海湾合作委员会 4.9.2:http://goo.gl/IE19y8
clang 3.5.1:http://goo.gl/FRbD8Z