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

Почему алгоритмы диапазонов несовместимы с итераторами 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

Функция оптимизирована для постоянной времени компиляции
Предположим, у меня есть функция вычисления длины вектора, у которой есть дополнительный параметр inc (он сообщает расстояние между соседними элементами). Простая реализация: float calcLength(const float *v, int size, int inc) { float l =...
297 просмотров
schedule 08.10.2021

лямбды в неоцененных контекстах (до C ++ 20)
В настоящее время я читаю статью P0315R1 который говорит о лямбдах в неоцененном контексте В документе есть утверждение, которое объясняет почему лямбды не могут появляться в неоцененных контекстах (конечно, только до C ++ 20) , как показано...
839 просмотров
schedule 14.10.2021

удобный класс Vector3f
Иногда возникает необходимость иметь класс Vector3f , который имеет элементы x , y и z и может быть индексирован как массив float[3] одновременно (здесь, в SO, уже есть несколько вопросов по этому поводу). Что-то вроде: struct Vector3f...
1396 просмотров
schedule 16.09.2021

Можно ли скопировать сопрограммы C ++ 20?
Я играл с сопрограммами C ++ 20 и пытался переместить часть моей кодовой базы, чтобы использовать их. Однако я столкнулся с проблемой, поскольку не похоже, что новые сопрограммы можно скопировать. Объекты generator удалили конструкторы копирования...
369 просмотров
schedule 22.10.2021

если constexpr - почему полностью проверяется исключенный оператор?
Я возился с c ++ 20 consteval в GCC 10 и написал этот код #include <optional> #include <tuple> #include <iostream> template <std::size_t N, typename Predicate, typename Tuple> consteval std::optional<std::size_t>...
685 просмотров
schedule 26.09.2021

Зарезервировано пространство имен std?
Предположим, у меня есть внешнее пространство имен, а внутри этого пространства имен есть внутреннее пространство имен std . Это разрешено или запрещено стандартом? namespace outer { namespace std { // custom implementation } }...
67 просмотров
schedule 01.11.2021

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

Могу ли я изменить порядок вывода аргументов шаблона для универсальной вариативной лямбды?
Возьмите следующий код, который представляет собой упрощенный пример: template <typename F> void foo(F f) { //bool some = is_variadic_v<F>; // Scenario #1 bool some = true; // Scenario #2 f(int(some),...
484 просмотров

Сопоставление значений времени выполнения с типами шаблонов слишком далеко
Я работаю над настраиваемой структурой FFI для языка и сталкиваюсь с проблемой необходимости создания экземпляров шаблонов во всех возможных ветвях сравнения. Когда это становится рекурсивным, количество экземпляров (и время компиляции) резко...
64 просмотров
schedule 01.11.2021

clang говорит, что вызов функции void consteval не является постоянным выражением
clang (trunk) выдает ошибку для следующего кода: consteval void f() {} int main() { f(); // error: call to consteval function 'f' is not a constant expression // note: subobject of type 'void' is not initialized } в то время...
480 просмотров

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

Почему при оценке в constexpr оказывается недостижимый код?
Я ожидал, что компилятор разрешит недопустимые операторы или сообщения об ошибках в недостижимом коде, включающем constexpr, если: #include <type_traits> #include <iostream> struct ret_t; struct only_declared_t; auto test = [](auto a)...
180 просмотров
schedule 13.10.2021

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

Являются ли лямбды без захвата структурными типами?
P1907R1 , допускается для C + +20, введены структурные типы , которые являются допустимыми типами для параметра шаблона, не являющегося типом. GCC и Clang принимают следующий фрагмент кода для C ++ 2a: template<auto v> constexpr auto...
170 просмотров
schedule 10.09.2021

Как написать руководство по дедукции для псевдонимов агрегатных шаблонов?
С помощью C ++ 20 можно создать рекомендации по дедукции для шаблона псевдонима (см. Раздел «Вычисление для шаблонов псевдонимов» по ​​адресу https://en.cppreference.com/w/cpp/language/class_template_argument_deduction ). Тем не менее, я не мог...
213 просмотров

Изменения / различия между C ++ 20 и C ++ 17, в частности ключевое слово constinit
Новая версия C ++. Т.е. C ++ 20 содержит множество изменений, удалений и новых функций. Я пытаюсь понять ключевое слово constinit. Кто-нибудь может объяснить это ясно? Я нашел эту фразу где-то в Интернете о constinit. Переменная инициализируется...
54 просмотров
schedule 23.11.2021

Различное поведение SFINAE для std :: tuple_size_v на разных компиляторах
Рассмотрим этот код: #include <tuple> #include <type_traits> #include <iostream> template <typename T, typename = void> struct is_tuple_like : std::false_type {}; template <typename T> struct is_tuple_like<T,...
376 просмотров
schedule 20.09.2021

Увеличение volatile в C ++ 20 с операциями с volatile устарело
В C ++ 20 исключены некоторые операции с типами volatile (после P1152 ). Следующий код, действовавший до C ++ 20: void busyLoop(std::size_t count) { for (volatile size_t counter = 0; counter < count; ++counter); } теперь генерирует...
223 просмотров
schedule 10.09.2021

ошибка: выведенный тип класса "кортеж" в типе возвращаемого значения функции
Чем я занимаюсь Я практикую C ++ через 3 года. Мне нужно было учиться быстро и широко, поэтому этот пример, который я пытаюсь решить, может показаться вам странным. Я использую c++20 , gcc 10.2 . Я хотел сделать функцию перечисления Python...
266 просмотров
schedule 06.10.2021