Описание тега 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++ только для заголовков, которая довольно часто использует шаблоны. Теперь я хочу добавить некоторые проверки концепций для обработки ошибок времени компиляции, возникающих при использовании некорректных типов в параметрах шаблон…
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&lt;int&gt;::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 &lt;class T&gt; concept CopyConstructible = std::MoveConstr…
06 фев '19 в 11:24
0 ответов

Проверьте, есть ли у двух классов метод с одинаковой сигнатурой

Предполагать: struct A { int foo(int x); } template&lt;typename X&gt; struct B { int foo(int x); static_assert(B::foo has same sig as X::foo) } B&lt;A&gt; trigger check По сути, я хочу определить структуру архетипа, а затем проверить концепцию, имее…
18 фев '17 в 08:09
0 ответов

Простое ограничение (концепция) дает внутреннюю ошибку g++

Ниже приведен простой пример, который не компилируется из-за внутренней ошибки g ++ (g++-7.0.1-20170412): template&lt;typename F&gt; concept bool FCallable() { return requires(F) { F::f(); }; } class Test1 { public: template&lt;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 []&lt;class…
1 ответ

Почему ConstMultiArrayConcept boost:: multi_array имеет аргумент шаблона NumDims?

Я написал operator&lt;&lt; специализация, которая обрабатывает boost::multi_arrayи использовал ConstMultiArrayConcept так что он будет работать как на внешнем массиве, так и на подмассивах. Мне интересно, однако, почему multi_array понятия имеют std…
28 авг '12 в 16:40
1 ответ

В списках обязательных параметров вы можете ввести типы, которые приводят к ошибкам замещения?

Например, могу ли я определить понятие как template &lt;class Iter&gt; concept bool Iterator = requires(Iter i, typename std::iterator_traits&lt;Iter&gt;::value_type val, typename std::iterator_traits&lt;Iter&gt;::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