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

Гипотетические вопросы о концепциях C ++ 0x
( Преамбула: Я поздно последовал за игрой C ++ 0x, и недавние споры об удалении концепций из стандарта C ++ 0x побудили меня узнать о них больше. Хотя я понимаю что все мои вопросы полностью гипотетические - поскольку концепции не будут...
475 просмотров
schedule 29.06.2023

Моделирование концепций C ++ с помощью свойств Scala
В документе « Классы типов как объектов и Implicits » . Я пытаюсь написать что-то вроде InputIterator концепции и find функции на Scala: concept InputIterator<typename Iter> { typename value_type; value_type operator*(Iter);...
295 просмотров
schedule 07.03.2024

Почему конкретное ограничение концепции дублируется в созданном шаблоне?
Я только начал экспериментировать с концепциями C ++, используя g ++ 6.1.0 (версия пакета Debian 6.1.1-1, флаги -std=c++17 -fconcepts ), и я столкнулся с сообщением об ошибке, которое я не понимаю в следующем сокращенном примере: #include...
107 просмотров
schedule 26.02.2023

ограничение специализаций с использованием SFINAE, ограничений или концепций?
Следующая программа работает нормально: struct M; // forward declare so compiler will recognize this type struct N; template< typename J > struct B { template< typename U > void Func1(); }; template<> template<> void...
415 просмотров

Определение концепции, требующее ограниченной функции-члена шаблона
Примечание: все последующее использует реализацию Concepts TS в GCC 6.1 Допустим, у меня есть концепция Surface , например: template <typename T> concept bool Surface() { return requires(T& t, point2f p, float radius) {...
2116 просмотров
schedule 30.03.2022

Обнаружение концепции TS с помощью GCC 6.1
Как определить наличие TS Concepts с помощью GCC 6.1? На этой странице предлагается предопределить макрос __cpp_experimental_concepts в реализации, поддерживающей концепцию TS. . Однако следующая тестовая программа компилируется без ошибок на...
391 просмотров
schedule 07.12.2022

Избегать дублирования требований в предварительном объявлении шаблона?
Играю с Concepts TS в новом проекте. Мой вопрос связан с кажущейся круговой зависимостью, которая у меня есть между шаблоном структуры и связанной концепцией, которую я хочу создать. Конкретная логика концепции состоит в том, чтобы проверить,...
234 просмотров
schedule 31.01.2023

Может ли пространство имен (быть/удовлетворять) концепции?
Я знаю, что предложение C++ Concepts предназначено, возможно, среди прочего, для наложения ограничений на параметры шаблона (скажем, на «последовательность») в текущей ситуации, в которой все, что удается скомпилировать, достаточно хорошо (и сообщения...
113 просмотров

Цикл понятий C++
Я хотел бы попросить компилятор проверить, содержит ли кортеж только «метатипы». Кстати, я совершенно новичок в концепциях С++. template < typename T > struct Type { using type = T; }; //! A type can be easily check with a small...
410 просмотров

Использование концепций для разрешения перегрузки функций (вместо SFINAE)
Пытаюсь попрощаться со СФИНАЕ. Можно ли использовать concepts для различения функций, чтобы компилятор мог сопоставить правильную функцию в зависимости от того, соответствует ли отправленный параметр concept ограничениям? Например,...
241 просмотров

Как размещение определения понятия меняет поведение программы
Я компилирую этот код с gcc 9.3 с -fconcepts . Следующее успешно компилируется void f(int) {} // 1 template<typename T> // 2 concept C = requires (T a) { { f(a) }; }; template<C T> // 3 void g()...
64 просмотров
schedule 18.06.2022

Можно ли определить вызываемое понятие, включающее функции и лямбда-выражения?
Я хочу определить концепцию, которая будет принимать все вызываемые объекты. Вот что я сделал до сих пор: template<typename F> concept Func = std::is_function_v<std::remove_pointer_t<std::decay_t<F>>> || (requires (F f) {...
237 просмотров
schedule 15.01.2023

Самореференциальные концепции c ++ 20
Что является моральным эквивалентом следующего недействительного кода? // Suppose you want to check, as part of a concept, // if some operation on a type results in a type that models such concept. // you cannot constrain the resulting type with...
139 просмотров
schedule 14.04.2024

Можно ли использовать концепции с идиомой CRTP?
Учитывая следующий пример кода с любопытным повторяющимся шаблоном (CRTP): template<typename X> struct Base { X f() const { return X{}; } }; template<template<typename> typename T> struct Derived : T<Derived<T>>...
199 просмотров
schedule 10.09.2022

Это правильное использование концепций C ++ 20?
У меня есть простой класс Vec3<T> , и я хотел бы обновить его, используя концепции C ++ 20 (Clang 10.0.0 с -std = c ++ 20). Новая версия выглядит примерно так: template <typename T> concept Arithmetic = std::is_arithmetic_v<T>;...
359 просмотров
schedule 15.06.2023

Как я могу перегрузить функцию для концепции?
Предположим, у меня есть шаблон функции и различные перегрузки, которые специализируют шаблон. Поскольку перегрузки лучше соответствуют версии шаблона при разрешении перегрузки, они всегда будут иметь приоритет. template <typename T> void...
120 просмотров

Лямбдификация концепции - это улучшение или плохая практика?
Похоже, что вы можете добавить лямбду в концепцию, а затем написать в ней код. Возьмем это для примера. Я предпочитаю стандартные концепции для таких концепций и помню, что это только для целей этого примера - godbolt template<class T>...
138 просмотров
schedule 21.07.2023

Разница между std::same_as и std::is_same
Я читал документацию std::same_as и похоже, что она просто перенаправляется на std::is_same_v . cppreference имеет следующий пример реализации: namespace detail { template< class T, class U > concept SameHelper =...
217 просмотров
schedule 14.06.2023

Как написать концепцию C ++, ограничивающую шаблон до std :: map и std :: unordered_map
Если у меня есть такие шаблоны, которые выполняют простую операцию копирования для примера, но для std::map и std::unordered_map : template<typename T1, typename T2> inline std::map<T1, T2> map_copy(std::map<T1,T2> const&...
208 просмотров
schedule 15.05.2023

Условный constexpr на независимом условии
Предположим, у меня есть функция конфигурации, которую должен определить пользователь библиотеки, которая может быть или не быть constexpr . constexpr int iterations() { return 10; } // Or maybe: int iterations() { return...
89 просмотров
schedule 07.07.2023