Описание тега 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…
20 фев '22 в 23:04
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
ответов
Определить, есть ли в классе метод, подходящий для структурированной привязки
Есть ли способ написать черту или концепцию типа, которые можно использовать для определения того, есть ли у типа метод, который можно использовать в структурированной привязке с определенными типами? Предположим, речь идет о классе. Я хочу получить…
30 ноя '21 в 08:38
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