Почему gcc компилирует этот код для стандарта GNU C++, но не компилирует для GNU C++11?
#include <iostream>
int main() {
char *s = "string";
std::cout << s[[]{ return 1; }()];
}
Потому что это запрещено стандартом C++14(по ссылке более новая версия черновика):
[dcl.attr.grammar]p6 Two consecutive left square bracket tokens shall appear only when introducing an attribute-specifier. [ Note: If two consecutive left square brackets appear where an attribute-specifier is not allowed, the program is ill-formed even if the brackets match an alternative grammar production. — end note ]
Там даже пример есть:
y[[] { return 2; }()] = 2; // error even though attributes are not allowed
// in this context.
Ну и первая строка у Вас тоже не очень, должно быть так:
const char *s = "string";
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники