В вопросе Переопределение lambdas не разрешено в С++ 11, почему?, была предоставлена небольшая программа, которая не компилируется:
int main() {
    auto test = []{};
    test = []{};
}
На вопрос был дан ответ, и все было хорошо. Затем пришел Йоханнес Шауб и сделал интересное наблюдение:
Если вы ставите
+перед первой лямбдой, она волшебным образом начинает работать.
Итак, мне любопытно: Почему работает следующая работа?
int main() {
    auto test = +[]{}; // Note the unary operator + before the lambda
    test = []{};
}
Он компилируется с помощью GCC 4.7+ и Clang 3.2+. Соответствует ли стандарт кода?
