Описание тега c++-concepts
Concepts (ранее известный как "Concepts Lite") в C++ - это предлагаемое расширение языка, разработанное для улучшения поддержки общего программирования. Вопросы, относящиеся к этому предлагаемому расширению или к расширенной библиотеке "проверки концепции", должны использовать этот тег; вы также можете использовать один или несколько тегов [C++], [boost], [template-meta-programming] и [metaprogramming] в зависимости от вашего вопроса.
2
ответа
Проверка концепции не компилируется в gcc, потому что она "не имеет связи"
Я создал класс проверки концепции, основанный на этом вопросе, цель которого - убедиться, что у данного класса есть статическая функция-член, называемая baseUnitConversionFactor, Класс компилируется и прекрасно работает с msvc2013, но он не будет ко…
28 дек '15 в 21:45
1
ответ
Изменить тип на значение bool в аргументе шаблона
Я изучаю шаблон шаг за шагом, и я думаю, что это последнее, что мне нужно сделать для моего текущего проекта: template < typename Object, bool Shared> class Foo { private: struct SubFoo { //if Shared == true -> FooShared foo; //if Shared ==…
04 дек '16 в 11:57
1
ответ
Написание и проверка ваших собственных концепций на С ++
Я пишу библиотеку C++ только для заголовков, которая довольно часто использует шаблоны. Теперь я хочу добавить некоторые проверки концепций для обработки ошибок времени компиляции, возникающих при использовании некорректных типов в параметрах шаблон…
07 авг '15 в 18:08
0
ответов
Именованные требования / Наличие стандартных концепций
Можно ли получить доступ / использовать какие-либо из Стандартных концепций ( список стандартных концепций?) Или Именованные требования к существующему набору компиляторов? Хотя я могу получить доступ к поддержке концепций в GCC с помощью -fconcepts…
10 янв '19 в 21:09
1
ответ
Класс моделирует концепцию? (понятие-черта или наоборот)
Видимо, я упускаю что-то очевидное, скорее всего, из-за SFINAE, но я просто не могу понять, что это такое. Я мог бы обвинить мой зуб мудрости, но это звучало бы странно, потому что речь идет о мудрости... В C++ при использовании Concepts (Boost, Lit…
08 дек '13 в 03:37
1
ответ
Моделирование концепций C++ с чертами Scala
Есть несколько примеров использования таких черт Scala, как концепции C++ и классы типов Haskell, в статье "Классы типов как объекты и последствия". Я пытаюсь написать что-то вроде InputIterator концепция и find функция в Scala: concept InputIterato…
21 фев '13 в 11:28
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
3
ответа
Является ли vector<int>:: const_iterator output_iterator?
Согласно концепции C++: Любой итератор, кроме input_iterator, является output_iterator. vector<int>::const_iterator это random_access_iterator и, конечно, это output_iterator, Однако, согласно cppreference.com, output_iterator должно быть дост…
01 дек '16 в 01:56
1
ответ
Почему тип CopyConstructible также должен быть MoveConstructible?
Как указано в cppreference, требование для типа T быть CopyConstructible состоит в том, что он также должен быть MoveConstructible. Проект концепции STL CopyConstructible содержит: template <class T> concept CopyConstructible = std::MoveConstr…
06 фев '19 в 11:24
0
ответов
Проверьте, есть ли у двух классов метод с одинаковой сигнатурой
Предполагать: struct A { int foo(int x); } template<typename X> struct B { int foo(int x); static_assert(B::foo has same sig as X::foo) } B<A> trigger check По сути, я хочу определить структуру архетипа, а затем проверить концепцию, имее…
18 фев '17 в 08:09
0
ответов
Простое ограничение (концепция) дает внутреннюю ошибку g++
Ниже приведен простой пример, который не компилируется из-за внутренней ошибки g ++ (g++-7.0.1-20170412): template<typename F> concept bool FCallable() { return requires(F) { F::f(); }; } class Test1 { public: template<FCallable P, FCallabl…
12 апр '17 в 13:20
9
ответов
C++0x больше не будет иметь концепций. Мнения? Как это повлияет на вас?
На встрече C++ 0x в июле 2009 года во Франкфурте было решено удалить концепции из C++0x. Лично я разочарован, но я предпочел бы иметь реализуемый C++ 0x, а не C++0x. Они сказали, что будут добавлены позже. Что вы думаете об этом решении / проблеме? …
20 июл '09 в 17:58
1
ответ
Предупреждение об устаревании C++ Boost Concepts
Верхняя часть этой страницы предупреждает об устаревшем API. Где я могу найти его замену?
22 сен '11 в 21:09
1
ответ
Компиляторы, реализующие концепцию C++
Какие компиляторы реализовали Концепции в соответствии со стандартом C++17 ISO? И не могли бы вы дать мне пример его использования в коде? (Нет псевдо примеров, пожалуйста)
14 апр '17 в 14:55
1
ответ
Может ли оценка концепции зависеть от того, где она оценивается?
[temp.concept]/5 говорит: Концепция не создается ([temp.spec]). [Примечание: id-выражение, обозначающее специализацию концепта, оценивается как выражение ([expr.prim.id]). [...]] Означает ли это, что это правило ниже ( [temp.point] / 8) не применяе…
12 ноя '18 в 10:21
2
ответа
При голосовании P1141R1, сколько типов выводится из нескольких выведенных параметров с одинаковым ограничением?
Согласно Концепции TS, в то время как выводимый параметр без ограничений каждый раз выдает новый параметр типа шаблона, выводимые параметры с ограничениями дают только один параметр типа шаблона на ограничение: [](auto a, auto b) // IS-A []<class…
14 ноя '18 в 06:49
1
ответ
Почему ConstMultiArrayConcept boost:: multi_array имеет аргумент шаблона NumDims?
Я написал operator<< специализация, которая обрабатывает boost::multi_arrayи использовал ConstMultiArrayConcept так что он будет работать как на внешнем массиве, так и на подмассивах. Мне интересно, однако, почему multi_array понятия имеют std…
28 авг '12 в 16:40
1
ответ
В списках обязательных параметров вы можете ввести типы, которые приводят к ошибкам замещения?
Например, могу ли я определить понятие как template <class Iter> concept bool Iterator = requires(Iter i, typename std::iterator_traits<Iter>::value_type val, typename std::iterator_traits<Iter>::reference ref) { ++i; // other impl…
26 сен '15 в 19:50
1
ответ
В чем разница между концепциями C++0x и ограничениями C#?
C++0x вводит понятия, которые позволяют вам определить, в основном, тип типа. Он определяет свойства, требуемые для типа. C# позволяет вам указывать ограничения универсального с предложением " где ". Есть ли между ними смысловая разница? Спасибо.
31 янв '09 в 00:06
0
ответов
Как я могу определить концепцию для функторов, которая принимает шаблонные классы в качестве своих параметров?
Я пишу программу для численного моделирования. Одна из моих функций принимает обратные вызовы. Функция реализована как шаблонная функция, а обратные вызовы - как классы шаблонов, поэтому вызовы обратных вызовов могут быть встроенными. Теперь моя фун…
06 авг '16 в 08:46