Вопросы с тегом «c++20»

C ++ 20 является целью для версии C ++ после C ++ 17. Этот тег следует использовать (вместе с тегом C ++) для вопросов о возможностях C ++ на пути к C ++ 20.

1
Это UB, чтобы возобновить сопрограмму функции-члена объекта, время жизни которого закончилось?
Этот вопрос вытекает из этого комментария: объяснение времени жизни лямбда для сопрограмм C ++ 20 относительно этого примера: auto foo() -> folly::coro::Task<int> { auto task = []() -> folly::coro::Task<int> { co_return 1; }(); return task; } Таким образом, вопрос заключается в том, fooприведет ли выполнение возвращаемой сопрограммы к UB. «Вызов» …

1
Неуказанное неявное создание объекта
Поскольку P0593 неявное создание объектов для низкоуровневой манипуляции с объектами было принято, объекты теперь можно создавать неявно в C ++ 20. В частности, формулировка, предложенная предложением, позволяет определенным операциям (таким как std::malloc) автоматически создавать и запускать время жизни объектов определенных типов, так называемые типы неявного времени жизни , если введение …

1
Как shift_right () предназначен для реализации в C ++ 20?
В C ++ 20 <algorithm>заголовок получает два новых алгоритма: shift_left()иshift_right() . Оба они принимают любой LegacyForwardIterator. Ведь shift_left()указано, что «шаги выполняются в порядке возрастания, iначиная с ​0»; для shift_right(), указано, что «если ForwardItсоответствует требованиям LegacyBidirectionalIterator, то перемещения выполняются в порядке убывания, iначиная с last - first - n - 1». …

4
Скрыть пустой базовый класс для агрегатной инициализации
Рассмотрим следующий код: struct A { // No data members //... }; template<typename T, size_t N> struct B : A { T data[N]; } Вот как вы должны инициализировать B: B<int, 3> b = { {}, {1, 2, 3} }; я хочу избежать ненужного пустого {} для базового класса. Существует …

1
Что такое эквивалент MSVC для -fno-char8_t?
В C ++ 20 u8строковых литералов основаны на char8_tтипе. Они сознательно больше не переходят в char const*: const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20 Конечно, конечная цель при переходе на C ++ 20 - полностью перейти на новое поведение (в приведенном выше примере: изменить тип …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.