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

10
Сможем ли мы создавать контейнеры с представлениями в C ++ 20?

Диапазоны идут к C ++ со стандартной версией C ++ 20. Мой вопрос: сможем ли мы создать (существующие) контейнеры стандартной библиотеки с любым диапазоном? И что еще важнее, с диапазоном просмотров? Например, будет ли это: #include <vector> #include <iostream> #include <ranges>...

10
Почему в std :: span отсутствуют операторы сравнения?

Разве это не было std::spanразработано как облегченная ссылка на подобласти массиваstd::vector / std::array/ plain ? Разве он не должен содержать операторы сравнения в своем API, чтобы соответствовать им? Что было причиной исключения? Примечание: операторы сравнения, я имею в виду либо полный набор...

10
Разрешена ли арифметика указателей на выделенном хранилище начиная с C ++ 20?

В стандарте C ++ 20 говорится, что типы массивов являются неявными типами времени жизни . Означает ли это, что массив неявного типа времени жизни может быть создан неявно? Неявное создание такого массива не будет вызывать создание элементов массива? Рассмотрим этот случай: //implicit creation of an...

10
Разрешено ли выражениям «требуется» захватывать переменные вмещающей области?

В следующем примере аргументы функции используются для проверки с помощью выражения require, правильно ли сформировано выражение, использующее их. Выражение require не имеет аргументов; он напрямую использует переменные в области действия функции: #include <cstddef> #include <vector>...

9
Это UB, чтобы возобновить сопрограмму функции-члена объекта, время жизни которого закончилось?

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

9
Неуказанное неявное создание объекта

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

9
Как shift_right () предназначен для реализации в C ++ 20?

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

9
Скрыть пустой базовый класс для агрегатной инициализации

Рассмотрим следующий код: 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} }; я хочу избежать ненужного пустого {} для базового класса. Существует решение , предложенное...

9
Что такое эквивалент 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 - полностью перейти на новое поведение (в приведенном выше примере:...