以下代码在Clang中编译,但在GCC中不编译。当我使用左值调用operator()
时,它可以正常工作,但不能使用右值。为什么呢?
struct S
{
bool operator()() const & { return true; }
bool operator()() const && { return true; }
};
int main()
{
S s;
s(); // works
S()(); // fails (error: call of '(S) ()' is ambiguous)
}
我正在GCC 4.8上编译此代码。