Описание тега c20

0 ответов

Есть ли другой способ показать то же имя переменной/типа в списке параметров шаблона вне класса?

Один из способов показать параметры шаблона вне класса — это usingвведите псевдоним для типа и назначьте переменную шаблона для staticпеременная: template <typename ValueType, int Size> struct Array { using value_type = ValueType; static const…
14 янв '21 в 02:27
0 ответов

Почему вывод шаблонных аргументов не работает в этом примере (из A Tour of C++, 6.2.3 Template Argument Deduction)?

Следующий пример скопирован из книги A Tour of C++ (6.2.3 Вывод аргументов шаблона). template<typename T> class Vector { public: Vector(int); Vector(initializer_list<T>); //initializer-list constructor //... }; Vector<int> v3(1); /…
18 янв '21 в 17:40
1 ответ

С++ 20 диапазонов ошибки пользовательского сортируемого контейнера: шаблон кандидата игнорируется: ограничения не удовлетворены [с _Range = ...] operator() (..) const

Я написал простой шаблон класса, обертывающий необработанный массив, просто чтобы поиграть с библиотекой диапазонов C++ 20 и хотел, чтобы он поддерживал итераторы произвольного доступа и заставлял его работать с std::ranges::sort. #ifndef BOX_CONTAI…
06 сен '21 в 18:51
2 ответа

Почему Visual Studio правильно компилирует эту функцию без оптимизации, но неправильно с оптимизацией?

Я экспериментирую с лямбда-оболочкой, похожей на y-комбинатор (хотя я знаю, что они на самом деле не являются, строго говоря, y-комбинаторами), и я столкнулся с очень странной проблемой. Мой код работает точно так, как я ожидал в конфигурации отладк…
04 фев '21 в 17:54
0 ответов

c++: почему ограничение на offsetof() для нестандартных объектов компоновки или как восстановить родителя из указателя на член

У меня есть ситуация, когда у меня есть указатель на элемент данных, и из него я хочу восстановить адрес содержащего объекта (реализуя класс свойств для объекта). У меня есть полнофункциональная реализация https://onlinegdb.com/ByQJurll_ преобразова…
28 янв '21 в 15:41
1 ответ

Что беспокоит разработчика библиотеки С++ std, чтобы предупредить неопределенное поведение при добавлении специализации для шаблона remove_cvref?

В этой ссылке https://en.cppreference.com/w/cpp/types/remove_cvref указано template< class T > struct remove_cvref; Если тип T является ссылочным типом, предоставляет тип typedef члена, который является типом, на который ссылается T, с удаленн…
02 фев '21 в 04:32
0 ответов

Выбранная перегрузка из набора функций преобразования несовместима между GCC и Clang.

Рассмотрим этот пример #include <iostream> struct T{ T() = default; T(T const&) =default; }; T global; struct S{ operator T(){ std::cout<<"#1\n"; return T{}; } operator T&(){ std::cout<<"#2\n"; return global; } }; int main(…
06 сен '21 в 09:25
1 ответ

С++20 ошибка компилятора бесконечных диапазонов/представлений

Итак, я посмотрел видео (14:30) о новых функциях С++ 20 и захотел попробовать бесконечные диапазоны. Я написал этот код: #include <iostream> #include <cmath> #include <ranges> using std::cout; using std::endl; bool primeCheck(const…
05 янв '21 в 13:26
1 ответ

Какая связь между string_view и basic_string<char> и почему пример кода string_view не работает?

Я скопировал код из A Tour of C++ Бьярна Страуструпа, чтобы протестировать представления строк, но я продолжаю получать сообщение об ошибке: error: no matching function for call to ‘std::__cxx11::basic_string<char>::basic_string(std::basic_str…
1 ответ

Получение адреса rvalue

Почему версия GCC >= 10.1производит taking address of rvalueошибка со следующим кодом? Или, при использовании вместо этого lvalue, почему он выдает no matching function for call to 'a::n(a*)'ошибка? Откуда берется параметр указателя? Clang, похож…
16 фев '22 в 01:22
1 ответ

Можно ли сделать чтение входных значений N более элегантным с помощью С++20?

Предположим, я хочу прочитать n целых чисел из стандартного потока ввода. Чтение: Как прочитать N целых чисел в вектор? Я считаю, что рекомендуемое решение в основном: template<class InputIt, class Size, class OutputIt> OutputIt copy_atmost_n(…
11 дек '20 в 20:39
1 ответ

Что такое istream_view и когда его использовать?

Судя по всему, в C++20 появился новый std::istreamсвязанная конструкция: std::istream_view. Страница cppreference на нем сейчас незавершенная † . Итак, что такое «взгляд на istream"и для чего я могу его использовать? † - Хорошо, технически он перена…
11 дек '20 в 22:32
1 ответ

Передавайте вложенные типы в родительский класс, не повторяясь (DRY) в C++20

Как показано в приведенном ниже примере, мне нужно, чтобы моя структура имела доступ ко всем структурам «полей», определенным в дочерней структуре. Но у меня есть некоторые ограничения: Поля должны быть объявлены как вложенные типы наследующей струк…
02 мар '21 в 13:08
1 ответ

Clang и GCC имеют противоречивую интерпретацию в случае, когда имя параметра отображается как невычисленный операнд.

#include <iostream> void fun(int a = sizeof(a)){ std::cout<< a<<std::endl; } int main(){ fun(); } Рассмотрим этот случай . Clang принимает его, а GCC отклоняет. Согласно [dcl.fct.default] p9 Аргумент по умолчанию оценивается кажды…
10 фев '22 в 04:51
0 ответов

Сравните указатели void в constexpr

В С++: Можно преобразовать указатели в void*без гипса Это нормально иметь 1-прошлый конец указателя, если вы не разыменовываете его. Можно сравнивать указатели с ==а также !=даже если они указывают на несвязанные объекты. В этом случае, почему это н…
13 фев '22 в 09:58
2 ответа

Сортировка вектора с использованием пользовательской функции, которая будет принимать вектор любого типа и std::less/std::greater в качестве компаратора

Я пытаюсь отсортировать вектор (в данном конкретном случае содержащий std::make_unique<std::string>но он также должен уметь работать с разными типами). Вот код, который мне предоставили: template <typename T> void print_vector_of_pointer…
06 янв '21 в 11:47
0 ответов

С++20 сопрограмм с ожидаемой пользовательской приостановкой

Я использую С++20 с ожидаемым ускорением для написания асинхронного сервера/клиента. Одной из особенностей сокета boost asio является то, что небезопасно одновременно вызывать async_write для сокета даже с 1 потоком. В основном я пытаюсь избежать си…
04 янв '22 в 11:07
1 ответ

Как проверить подписанный тип возврата?

Представьте, что у меня есть вызываемый шаблон-параметр «Fn fn». Теперь я хочу проверить, что возвращаемый тип является скаляром со знаком . Как я могу сделать это с концепциями С++20?
25 фев '22 в 14:02
1 ответ

Использование универсальных ссылок с нешаблонными типами?

Я создаю простой оператор конвейера для векторов, который пользователь будет использовать следующим образом (псевдокод): auto x = std::vector{1,2,3} | push_back(10) | push_back(100) ; Теперь я попытался определить оператор трубопровода следующим обр…
10 апр '21 в 20:14
1 ответ

Как получить возвращаемый тип метода параметра шаблона?

Я пытаюсь создать класс шаблона, который ожидает лямбда в качестве входных данных, сохраняет его, а также сохраняет в vectorнекоторые элементы type = return typeлямбды. Но я не знаю, как получить этот тип, хотя при построении экземпляра лямбда извес…
25 янв '21 в 18:12