c++17

Как эффективно получить "строковое представление" для подстроки " std:: string`

используя http://en.cppreference.com/w/cpp/string/basic_string_view в качестве ссылки, я не вижу способа сделать это более элегантно: std::string s = "hello world!"; std::string_view v = s; v = v.substr(6, 5); // "world" хуже того, наивный подход ...

Изменены правила для защищенных конструкторов в C++17?

у меня есть этот тест: struct A{ protected: A(){} }; struct B: A{}; struct C: A{ C(){} }; struct D: A{ D() = default; }; int main(){ (void)B{}; (void)C{}; (void)D{}; } и gcc и clang компилируют его в режиме C++11 и C++14. Оба сбоя в р ...

Как можно реализовать сопрограммы в языке C++

Я сомневаюсь, что это можно сделать переносимо, но есть ли какие-либо решения? Я думаю,что это можно сделать, создав альтернативный стек и сбросив SP, BP и IP при входе в функцию, а также получив выход сохранить IP и восстановить SP+BP. Деструкторы ...

Как новый цикл for на основе диапазона в C++17 помогает диапазонам TS?

комитет изменил диапазон на основе цикла for от: C++11: { auto && __range = range_expression ; for (auto __begin = begin_expr, __end = end_expr; __begin != __end; ++__begin) { range_declaration = *__begin; ...

Почему конструкция std:: optional дороже, чем std:: pair?

рассмотрим эти два подхода, которые могут представлять собой " необязательный int": using std_optional_int = std::optional<int>; using my_optional_int = std::pair<int, bool>; учитывая эти две функции... auto get_std_optional_int() -&g ...

Почему GCC предупреждает меня о провале, даже когда я использую [[fallthrough]]?

в следующем фрагменте кода я использую стандартный [[fallthrough]] атрибут из C++1z в документ, что требуется fallthrough: #include <iostream> int main() { switch (0) { case 0: std::cout << "a\n"; [[f ...

enum в строку в современном C++11 и C++14 и C++17 и будущее C++с 20

в отличие от всех других подобных вопросов, этот вопрос касается использования новых функций C++. 2008 c есть ли простой способ преобразовать перечисление C++ в строку? 2008 c простой способ использовать переменные перечисления типов в качестве ст ...

Инициализация QByteArray

Я могу инициализировать QByteArray как: QByteArray m_data; m_data[0] = 0x0c; m_data[1] = 0x06; m_data[2] = 0x04; m_data[3] = 0x04; m_data[4] = 0x02; m_data[5] = 0x00; Но я хотел бы что-то более компактное, например: QByteArray m_data{0x0c, 0x06 ...