стандарты GNU C++ и GNU C++11

261
26 ноября 2016, 18:59

Почему gcc компилирует этот код для стандарта GNU C++, но не компилирует для GNU C++11?

#include <iostream>
int main() {
    char *s = "string";
    std::cout << s[[]{ return 1; }()];
}
Answer 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";
READ ALSO
return &hellip; или return (&hellip;)

return … или return (…)

Часто вижу, что выражение, которое возвращает return, заключено в круглые скобкиНапример, в хедере set в Visual Studio 2015 во всех функциях, возвращающих...

232
Эхо сервер на двух разных машинах, подключенных к одному wifi с\с++

Эхо сервер на двух разных машинах, подключенных к одному wifi с\с++

Есть две машины на Linux, подключённые к одному Wi-Fi роутеруНужно реализовать на них эхо-сервер на C\C++

228
варианты инициализации объектов

варианты инициализации объектов

Начал изучать c++Может кто подробно объяснить чем отличаются эти варианты инициализации? Когда что вызывается и т

266
ifstream проход по строке

ifstream проход по строке

Просто есть строка string, в ней слова, разделенные пробеламиКак пройтись по этой строке, поочередно занося в буфер эти слова

254