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

Какие сопрограммы в C++20?

Какие сопрограммы в C++ 20? Чем он отличается от "Parallelism2" или / и "Concurrency2" (см. Изображение ниже)? Изображение ниже от ISOCPP. https://isocpp.org/files/img/wg21-timeline-2017-03.png
19 апр '17 в 18:39
2 ответа

Как использовать понятия в if-constexpr?

Как использовать понятия в if constexpr? Учитывая приведенный ниже пример, что бы дать if constexpr вернуть 1 в случае T отвечает требованиям integral а еще 0? template<typename T> concept integral = std::is_integral_v<T>; struct X{}; te…
07 фев '19 в 12:32
2 ответа

Пример использования в реальном мире для оператора космического корабля

Определение оператора космического корабля должно иметь четкое определение порядка, но влияет ли это на то, как ваш клиентский код или просто как определить ваши операторы сравнения классов? Поскольку в другом посте отсутствуют примеры из реальной ж…
23 янв '19 в 11:41
1 ответ

Почему тип CopyConstructible также должен быть MoveConstructible?

Как указано в cppreference, требование для типа T быть CopyConstructible состоит в том, что он также должен быть MoveConstructible. Проект концепции STL CopyConstructible содержит: template <class T> concept CopyConstructible = std::MoveConstr…
06 фев '19 в 11:24
1 ответ

Создание обёртки массива C (лучше std::array?)

Вот простой пример двумерного массива в стиле C: int c[2][2] = { { 1, 2 }, { 3, 4 } }; Если я хочу, чтобы это было std::arrayЯ должен использовать это: std::array<std::array<int, 2>, 2> c = { { { 1, 2 } }, { { 3, 4 } } }; Декларация боле…
02 дек '18 в 16:16
2 ответа

Лучшее ожидание от C++ вероятно

В соответствии с C++ предсказание с учетом ветвлений, я подготовил тест, чтобы увидеть, насколько он эффективен. Итак, в контрольном образце я пишу: int count=0; for (auto _ : state) { if(count%13==0) { count+=2; } else count++; benchmark::DoNotOpti…
27 сен '18 в 14:40
1 ответ

Может ли оценка концепции зависеть от того, где она оценивается?

[temp.concept]/5 говорит: Концепция не создается ([temp.spec]). [Примечание: id-выражение, обозначающее специализацию концепта, оценивается как выражение ([expr.prim.id]). [...]] Означает ли это, что это правило ниже ( [temp.point] / 8) не применяе…
12 ноя '18 в 10:21
2 ответа

Будет ли макрос `assert` удален в C++20?

Согласно cppreference, assert будет использоваться как атрибут C++. Тем не менее, уже существуют тонны проектов, сильно зависящих от макроса assertЕсть ли плохой эффект?
2 ответа

При голосовании P1141R1, сколько типов выводится из нескольких выведенных параметров с одинаковым ограничением?

Согласно Концепции TS, в то время как выводимый параметр без ограничений каждый раз выдает новый параметр типа шаблона, выводимые параметры с ограничениями дают только один параметр типа шаблона на ограничение: [](auto a, auto b) // IS-A []<class…
0 ответов

Модули и встраивание в C++

Меня интересует одна вещь, когда модули входят в C++. До этого были заголовочные файлы и файлы.cpp. Функции.cpp не могут быть встроены. Вот мой вопрос Насколько я знаю, семантика встраивания не будет изменена, но, если я реализую (не встроенную) фун…
17 окт '16 в 09:20
1 ответ

Создание настраиваемого класса диапазона, который оборачивает адаптеры повышения

У меня есть класс, который применяет некоторые адаптеры буст-преобразования к диапазону (например, в действительности это намного сложнее): struct Foo { auto range() const { return boost::irange(0, 10) | boost::adaptors::transformed([] (auto x) { re…
17 окт '18 в 21:41
2 ответа

Конструктор мешает переменной, назначенной инициализатору?

Некоторое время назад можно было использовать "назначенный инициализатор" в GCC: struct CC{ double a_; double b_; }; CC cc{.a_ = 1., .b_ = 2.}; assert(cc.a_ == 1. and cc.b_ == 2.); // ok CC cc{.bla = 0., .bli = 0.}; // compile error Однако, когда я …
2 ответа

Разница между std::decay и std::remove_reference

При шаблонном метапрограммировании в C++ я часто сталкиваюсь с чем-то вроде следующего: template <typename T> S<T> make_wrapper(T&& t) { return S<T>(std::forward<T>(t)); } Я знаю, что должен использовать что-то вроде …
18 дек '17 в 15:36
2 ответа

static_assert размер каждого параметра в пакете параметров

Я пытаюсь проверить, можно ли сохранить каждый параметр в пакете параметров в пределах 8 байт (sizeof <= 8) У меня есть функция подписи: template &lt;typename Return, typename... Arguments&gt; inline auto invoke(std::uint64_t hash, Arguments... argu…
12 дек '18 в 05:34
1 ответ

Есть или было предложение для C++ использовать контекст для коротких значений enum?

Я использую enum class везде в нашем коде. Иногда пространства имен накапливаются, делая код менее читабельным, как это может быть: _infoSign-&gt;setType(ui::InfoSign::Type::Ok); Я знаю, я мог бы сократить это с using заявление: using Type = ui::Inf…
13 дек '18 в 13:44
1 ответ

MSVC SAL vs. C++2a Контракт

В MSVC есть функция SAL, которую можно использовать для описания параметра, результата и т. Д., И она работает хорошо, а переносимость также хороша, функция контракта C++2a, кажется, делает то же самое, может кто-нибудь дать Разница между ними?
15 дек '18 в 08:57
1 ответ

Имеет ли смысл заменять интерфейсы / чисто абстрактные классы понятиями?

Как я понял, концепции очень похожи на интерфейсы. Подобно интерфейсам, концепции позволяют определять некоторый набор методов / концепций / интерфейсов, которые реализация ожидает и должна выполнить для своей задачи. Оба усиливают акцент на семанти…
17 дек '18 в 02:33
1 ответ

Почему std::filesystem::u8path устарела в C++20?

Введенный в C++17, std::filesystem::u8path кажется, устарела в C++20. В чем причина этого выбора? Что я должен использовать в C++17? Что я должен использовать в C++20?
02 янв '19 в 09:35
1 ответ

Реализация std::vector::push_back безопасности сильных исключений

Я внедряю свой собственный вектор, основанный на проекте Сан-Диего после 2018 года ( N4791), и у меня есть несколько вопросов относительно реализации строгой безопасности исключений. Вот некоторый код: template &lt;typename T, typename Allocator&gt;…
05 янв '19 в 11:04
3 ответа

Отключить специализацию класса, используя понятия

Я реализую свою собственную версию std::span используя Концепции TS. Я застрял в реализации этих конструкторов: template&lt;class Container&gt; constexpr span(Container&amp; cont); template&lt;class Container&gt; constexpr span(const Container&amp; …
16 янв '19 в 16:53