Следующий код компилируется в Clang, но не в GCC. Когда я вызываю operator()
с lvalue, он работает, но не с rvalue. Почему?
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.