Вопросы с тегом «c++-concepts»

5
Почему мы требуем требует требует?
Один из углов концепций C ++ 20 заключается в том, что есть определенные ситуации, в которых вы должны писать requires requires. Например, этот пример из [expr.prim.req] / 3 : Требуется выражение также может быть использовано в требуете-положение ([Темп]) в качестве способа написания специальных ограничений на аргументах шаблона , такие как …
161 c++  c++-concepts  c++20 

3
В чем разница между концепциями и ограничениями шаблона?
Я хочу знать, каковы семантические различия между предложением полных концепций C ++ и ограничениями шаблона (например, ограничениями, появившимися в Dlang, или предложением нового облегченного концепта для C ++ 1y ). На что способны полноценные концепции, которых не могут сделать ограничения шаблона?
96 c++  c++11  d  c++-concepts 

3
C ++ 20 Основные понятия: какая специализация шаблона выбирается, когда аргумент шаблона соответствует нескольким понятиям?
Данный : #include <concepts> #include <iostream> template<class T> struct wrapper; template<std::signed_integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "signed_integral" << std::endl; } }; template<std::integral T> struct wrapper<T> { wrapper() = default; void print() { std::cout << "integral" << std::endl; } }; int main() { wrapper<int> …

1
Требуется ли для «равенства_компараблей_схем» `общего_референции`?
Концепцияequality_­comparable_with<T, U> призвана заявить , что объекты типа Tи Uмогут быть сравнены равны друг другу, и если они есть, то это имеет ожидаемый смысл. Хорошо. Тем не менее, эта концепция также требует common_reference_t<T&, U&>существования. common_referenceПохоже, что основным стимулом для его сопутствующей функциональности является предоставление возможности прокси-итераторам иметь возможность представлять отношения …

1
Проверка концепции TS игнорирует модификатор частного доступа
Я хочу написать концепцию Indexable, означающую, что последовательность либо имеет начало / конец, которые возвращают RandomAccessIterator, либо определен operator [] и возвращает значение не типа void. Я использовал идеи из статьи Страуструпа для концепции Sequence и дополнил ее: template <class T> concept bool Indexable = Sequence<T> || requires(T t, size_t …
10 c++  c++-concepts 

1
Разрешено ли выражениям «требуется» захватывать переменные вмещающей области?
В следующем примере аргументы функции используются для проверки с помощью выражения require, правильно ли сформировано выражение, использующее их. Выражение require не имеет аргументов; он напрямую использует переменные в области действия функции: #include <cstddef> #include <vector> template<typename T> void Resize(T &v, std::size_t const n) { if constexpr (requires { v.resize(n); }) …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.