Вопросы по теме 'c++-concepts'

Концепции C ++ и std :: cout
Чтобы изучить концепции C ++, я попытался воссоздать концепцию EqualityComparable. Вот код, который я написал #include <iostream> template<typename T> concept bool EqualityComparable = requires(T a, T b) { {a == b}; {a !=...
271 просмотров
schedule 25.10.2021

Почему алгоритмы диапазонов несовместимы с итераторами std?
#include <vector> #include <iostream> #include <range/v3/all.hpp> int main() { auto coll = std::vector{ 1, 2, 3 }; ranges::copy( coll, ranges::ostream_iterator<int>{ std::cout, ", " } ); // ok...
774 просмотров
schedule 10.10.2021

Удовлетворенная и смоделированная концепция?
Вступление Стандарт определяет, что каждое понятие связано с двумя предикатами: предикат определяется: концепция удовлетворяется последовательностью аргументов шаблона, когда она оценивается как истина. Это почти синтаксическая проверка....
82 просмотров
schedule 16.10.2021

Должно ли предложение шаблона класса повторяться вне определений членов?
Когда член шаблона класса, который использует предложение requires , определен вне класса, gcc не жалуется, если requires не указан, тогда как clang делает. Рассмотрим фрагмент кода ниже: #include <concepts> template<typename...
418 просмотров

Используйте концепции, чтобы проверить, существует ли глобальная функция
Я могу создать концепцию, которая проверяет существование функции-члена, называемой to_string (), которая возвращает std :: string в структуре / классе. template<typename T> concept method_to_string = requires(T v) { { v.to_string() }...
115 просмотров
schedule 24.10.2021

Являются ли концепции C ++ формой экзистенциального типа?
Я смотрел определение экзистенциальных типов в Википедии ( Existential_types ), и оно похоже на некоторый путь к концепциям в C ++ (особенно к concept lite ). Являются ли концепции C ++ формой экзистенциального типа? Если нет, то в чем разница...
2252 просмотров
schedule 10.03.2022

проверка типа атрибута с концепциями
Я хочу проверить, соответствует ли атрибут структуры / класса моим потребностям с концепциями, но компилятор жалуется. Пример: struct N { char value; auto Get() { return value; } }; struct M { int value; auto Get() { return...
102 просмотров
schedule 30.03.2022

Предложение Requires появляется после параметра шаблона шаблона: это допустимая грамматика?
Недавно я неожиданно обнаружил, что gcc и msvc принимают следующий код (обратите внимание на предложение requires-clause в списке-шаблонов): #include <vector> template <template <class> requires true class> void f() {} int...
186 просмотров

Основные понятия - как ограничить значение интегрального шаблона
Есть такое определение шаблона: template<size_t N> void foo( void ) { /* ... */ } Как определить понятие так, чтобы N было ненулевым положительным значением (N> = 1)? Что-то вроде: template<size_t N> concept NonZeroSize...
61 просмотров
schedule 08.04.2022

Каковы варианты использования и полезность при передаче указателя на член данных в std :: invoke?
Я читал о std :: invoke по ссылке cpp и мне было интересно в каких ситуациях нам когда-либо понадобится передать в качестве первого аргумента указатель на член данных и объект в качестве второго аргумента. Из ссылки cpp он заявляет следующее:...
97 просмотров
schedule 22.04.2022

Концепции С++ 20: как ссылаться на имя класса в предложении `requires`?
У меня есть класс CRTP template <typename T> class Wrapper { // ... }; который предназначен для получения как class Type : Wrapper<Type> { // ... }; и я хотел бы обеспечить это, наложив ограничение на параметр шаблона T...
244 просмотров
schedule 17.05.2022

Концепция проверки функции вариативного шаблона
С C ++ 20 и концепциями за углом я подумал, можно ли написать концепцию, чтобы проверить, есть ли у Type функция с определенным именем, которая принимает любое количество произвольных аргументов. Возьмем, к примеру, следующий код (с синтаксисом TS...
190 просмотров
schedule 25.05.2022

Что использовать в качестве замены концепций (предстоящая функция) в C++?
Что использовать в качестве замены концепций (предстоящая функция) в C++? Возможно, вы слышали о концепциях в C++. Это функция, которая позволит вам указать требования к типам в шаблонах. Я ищу способ сделать это сейчас, и лучшее, что я нашел,...
329 просмотров
schedule 15.06.2022

Неперегруженная функция выдает неразрешенную перегруженную ошибку при использовании в качестве аргумента по умолчанию для концепции
Фон Согласно [temp.arg.template] / 1 , Аргумент-шаблон для параметра-шаблона шаблона должен быть именем шаблона класса или псевдонима шаблона, выраженного как выражение-идентификатор. это означает, что невозможно передать шаблон функции в...
65 просмотров

C ++ Concepts / SFINAE: разные результаты clang и MSVC / G ++ для определения внешней функции с шаблоном и Concept / SFINAE
Я определяю конструкторы класса, который ограничен проверкой эквивалентности типа базового типа переданного итератора по сравнению с node_type, определенным в моем классе, с помощью концепций или SFINAE. Однако, попробовав несколько комбинаций с...
99 просмотров
schedule 14.07.2022

Две концепции, отсылающие друг к другу в своих уточнениях
Возможно ли, чтобы две концепции как-то использовали друг друга в своих уточнениях? Пример: template <typename T> concept Node = /* ??? */; template <typename T> concept Visitor = /* ??? */; struct NodeArchetype { // ......
52 просмотров
schedule 24.07.2022

При голосовании за P1141R1 сколько типов выводится из нескольких выводимых параметров с одним и тем же ограничением?
Согласно Concepts TS, в то время как неограниченный выводимый параметр каждый раз дает новый параметр типа шаблона, ограниченные выводимые параметры дают только один параметр типа шаблона для каждого ограничения: [](auto a, auto b) // IS-A...
144 просмотров

Обоснование возможной реализации std :: assignable_from
У меня есть несколько вопросов о std::assignable_from поведении. Cppreference предлагает для него следующую реализацию: template< class LHS, class RHS > concept assignable_from = std::is_lvalue_reference_v<LHS> &&...
167 просмотров
schedule 07.08.2022

Концепция функции-члена, принимающей параметр шаблона в C ++ 20
Я хотел бы иметь концепцию struct creatorclass { template<typename T> int fct(T val) { return 42; } }; Мне нужна концепция, которая проверяет наличие функции fct без указания параметра шаблона. Это хочу иметь...
74 просмотров
schedule 07.08.2022

Ошибка концепции as_same
У меня есть хорошие черты типа, которые проверяют, является ли тип T итератором: демо: https://wandbox.org/permlink/vUZ2hjQq6i9nlXFd сообщение стека с объяснением: https://stackoverflow.com/a/67822208/9063139 Я пытаюсь сделать то же...
43 просмотров
schedule 19.08.2022