Почему 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";
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Часто вижу, что выражение, которое возвращает return, заключено в круглые скобкиНапример, в хедере set в Visual Studio 2015 во всех функциях, возвращающих...
Есть две машины на Linux, подключённые к одному Wi-Fi роутеруНужно реализовать на них эхо-сервер на C\C++
Начал изучать c++Может кто подробно объяснить чем отличаются эти варианты инициализации? Когда что вызывается и т
Просто есть строка string, в ней слова, разделенные пробеламиКак пройтись по этой строке, поочередно занося в буфер эти слова