Положительная лямбда: '+ [] {}' - Что это за колдовство? [Дубликат]
На этот вопрос уже есть ответ здесь:
Устранение неоднозначной перегрузки для указателя функции и 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+. Соответствует ли стандарт кода?