Описание тега c-concepts

1 ответ

Ограниченный преждевременный отказ CRTP

Я пытаюсь реализовать производный класс, наследуемый от базового шаблона, с производным классом в качестве параметра шаблона (надеюсь, приведенный ниже пример проясняет ситуацию): template <class T> struct S { T f() {return T();} }; struct D :…
15 июл '21 в 22:21
1 ответ

Непоследовательное поведение между gcc и clang при использовании концепций С++20

Кто-нибудь знает о несоответствии ниже? где gcc и clang ведут себя по-разному, когда задействованы концепции С++20 . В основном объявленный в gcc может найти мой пользовательский operator==даже если он объявлен после , но это не относится к простым …
24 дек '20 в 14:22
1 ответ

Постоянство и понятия сравнения в универсальном коде

Взглянем на cppreference template<class T, class U, class Cat = std::partial_ordering> concept three_way_comparable_with = std::three_way_comparable<T, Cat> && std::three_way_comparable<U, Cat> && std::common_refere…
05 мар '22 в 11:38
1 ответ

Используйте концепции или SFINAE, чтобы проверить, есть ли у класса шаблонная функция-член с параметром std::array

Введение Я хочу определить, используя концепции и/или признаки типа, есть ли у класса функция-член с параметром std::array. Например: класс ниже передал бы концепцию. class OStreamRealizationGood { template<size_t size> uint8_t send(std::array…
29 янв '21 в 15:20
0 ответов

Как я могу написать шаблон/концепцию, чтобы проверить, соответствует ли тип именованному требованию DefaultInsertable

При реализации собственного forward_listшаблон класса, я увидел, что некоторые методы, такие как resize()требуется, чтобы тип был DefaultInsertable . Согласно документации , DefaultInsertable Указывает, что экземпляр типа может быть создан по умолча…
18 июл '21 в 18:43
1 ответ

Основные понятия C++20: явное создание частично упорядоченных ограничений для функций-членов

Это работает и выводит «1», потому что ограничения функции частично упорядочены, и побеждает наиболее ограниченная перегрузка: template<class T> struct B { int f() requires std::same_as<T, int> { return 0; } int f() requires (std::same_a…
3 ответа

как указать вызываемую концепцию С++, когда выводятся типы вызываемых параметров

Я вызываю шаблонную лямбду из шаблонной функции, выводится тип параметров лямбды. Если тип лямбда-авто, то работает:https://godbolt.org/z/WYxj5G8vx #include <iostream> #include <cstdint> #include <array> #include <functional>…
02 фев '22 в 17:58
2 ответа

Почему концепция std::derived_from реализована с дополнительным тестом конвертируемости, который добавляет квалификаторы cv?

В библиотеке концепций GCC C++20 он имеет template<typename _Derived, typename _Base> concept derived_from = __is_base_of(_Base, _Derived) && is_convertible_v<const volatile _Derived*, const volatile _Base*>; Почему требуется тол…
27 янв '21 в 08:04
1 ответ

Могут ли концепции C++ работать с перегруженными наборами?

C++ имеет неприятное ограничение, заключающееся в невозможности передачи перегруженных функций в шаблоны, например, std::max нельзя использовать с std::transform. Я думал, что было бы неплохо, если бы концепции могли решить эту проблему, но в своих …
07 дек '21 в 16:50
1 ответ

Как мне проверить, является ли тип контекстуально конвертируемым в bool?

Я хочу написать концепцию, описывающую объекты-функции, которые не только вызываются , но и, например,std::function , иметь «пустое» состояние , которое можно проверить с помощью контекстного преобразования в . Булева проверяемая концепция « только …
02 мар '21 в 11:10
0 ответов

Определить, есть ли в классе метод, подходящий для структурированной привязки

Есть ли способ написать черту или концепцию типа, которые можно использовать для определения того, есть ли у типа метод, который можно использовать в структурированной привязке с определенными типами? Предположим, речь идет о классе. Я хочу получить…
1 ответ

Как решить, требуется предложение несовместимо

Я пытаюсь реализовать рекурсивную версиюstd::iter_value_t с концепцией C++20, так что базовый тип Tвложенного контейнера, такого как std::vector<std::vector<...std::vector<T>...>>можно восстановить. Экспериментальная реализация при…
09 дек '20 в 03:49
0 ответов

Следует ли предпочесть больше функций с ограничениями типа для устранения неоднозначности перегрузки в C++?

Пожалуйста, рассмотрите пример кода C++20 с перегруженной функцией foo: #include <concepts> template<typename T> int foo(T) { return 0; } template<typename T> int foo(T&) requires std::same_as<T, const T> { return 1; } in…
03 авг '21 в 07:16
1 ответ

Дублирование проверок требований концепции. Должны ли мы заботиться о них?

Когда функции вложены друг в друга, проверки требований концепции часто дублируются. Посмотрите на пример ниже, template<typename I> requires std::forward_iterator<I> auto fun1(I i){ ... }; template<typename I> requires std::forwar…
15 фев '22 в 14:25
1 ответ

Как проверить подписанный тип возврата?

Представьте, что у меня есть вызываемый шаблон-параметр «Fn fn». Теперь я хочу проверить, что возвращаемый тип является скаляром со знаком . Как я могу сделать это с концепциями С++20?
25 фев '22 в 14:02
0 ответов

Почему равенство проверяется дважды в same_as?

Глядя на "возможный" раздел реализацииstd::same_as что-то мне кажется странным: namespace detail { template< class T, class U > concept SameHelper = std::is_same_v<T, U>; } template< class T, class U > concept same_as = detail::Sam…
15 май '21 в 21:48
1 ответ

Вызывают ли концепции С++ создание экземпляров шаблонов для создания выходных данных?

Мне кажется, что для библиотек со многими большими и сложными экземплярами шаблонов одним из основных соображений при принятии решения об использовании концепций будет уменьшение размера выходных данных сборки. Я понимаю, что с SFINAE следующий код …
27 янв '21 в 21:39
0 ответов

Использование понятий с пакетами параметров нетипового шаблона в логических контекстах

В C++20 я определил концепцию AllIntegralс пакетом параметров нетипового шаблона auto... T_values. Хотя GCC 10.1.0 допускает его использование в некоторых контекстах, он отказывается компилировать его использование в других, особенно в ifутверждение…
19 дек '20 в 16:30