为什么在重载方法上使用引用限定符存在歧义?

时间:2014-01-03 01:13:33

标签: c++ c++11

以下代码在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上编译此代码。

0 个答案:

没有答案