Положительная лямбда: '+ [] {}' - Что это за колдовство? [Дубликат]

На этот вопрос уже есть ответ здесь:

Устранение неоднозначной перегрузки для указателя функции и std :: function для лямбды с помощью + 1 ответ

В вопросе переполнения стекаПереопределение лямбды не допускается в C ++ 11, почему?была дана небольшая программа, которая не компилируется:

int main() {
    auto test = []{};
    test = []{};
}

На вопрос был дан ответ, и все казалось в порядке. Потом пришелЙоханнес Шауб и сделалинтересное наблюдение:

Если вы положите+ до первой лямбды она волшебным образом начинает работать.

Так что мне любопытно: почему работает следующее?

int main() {
    auto test = +[]{}; // Note the unary operator + before the lambda
    test = []{};
}

Компилируется нормально с обоимиНКУ 4.7+ илязг 3.2+. Соответствует ли стандарт кода?

Ответы на вопрос(1)

Ваш ответ на вопрос