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

Что означает "[это]" в С++

Когда я читал API Cocos2dx 3.0, я нашел что-то вроде этого:

auto listener = [this](Event* event){
    auto keyboardEvent = static_cast<EventKeyboard*>(event);
    if (keyboardEvent->_isPressed)
    {
        if (onKeyPressed != nullptr)
            onKeyPressed(keyboardEvent->_keyCode, event);
    }
    else
    {
        if (onKeyReleased != nullptr)
            onKeyReleased(keyboardEvent->_keyCode, event);
    }
};

Что означает [this]? Является ли этот новый синтаксис в C++11?

4b9b3361

Ответ 1

Что означает [это]?

Он представляет lambda - вызываемый объект функции. Помещение this в скобки означает, что лямбда захватывает this, так что члены этого объекта доступны внутри него. Lambdas также может захватывать локальные переменные по значению или ссылке, как описано на связанной странице.

Лямбда имеет перегрузку operator(), так что ее можно вызвать как функцию:

Event * event = some_event();
listener(event);

который будет запускать код, определенный в теле лямбда.

Является ли этот новый синтаксис в С++ 11?

Да.