Подтвердить что ты не робот

Почему работает вызов функтора с незаявленной переменной?

class foo {
    public:
    bool operator () (int & i) {
        return true;
    }
};

int main() {
    foo(WhyDoesThisCompile);
    return 0;
}

При передаче WhyDoesThisCompile (без пробелов) к функтору программа компилируется.

Почему это? Я тестировал его на clang 4.0.0.

4b9b3361

Ответ 1

Вы не вызываете функтора.

Вы объявляете foo, называемый WhyDoesThisCompile.

Да, несмотря на круглые скобки.


Я думаю, вы имели в виду это:

   foo()(WhyDoesThisCompile);
// ^^^^^
// temp ^^^^^^^^^^^^^^^^^^^^
//  of   invocation of op()
// type
// `foo`

& hellip; который не работает.