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

C ++ 20 является целью для версии C ++ после C ++ 17. Этот тег следует использовать (вместе с тегом C ++) для вопросов о возможностях C ++ на пути к C ++ 20.

28
перечисление в строку в современном C ++ 11 / C ++ 14 / C ++ 17 и будущем C ++ 20
Вопреки всем другим подобным вопросам, этот вопрос касается использования новых функций C ++. 2008 с Есть ли простой способ конвертировать перечисление C ++ в строку? 2008 с Простой способ использовать переменные типов перечисления в виде строки в C? 2008 C ++ Как легко отобразить перечисления c ++ в строки 2008 …
354 c++  string  enums  c++17  c++20 

2
Что такое «промежуток» и когда я должен его использовать?
Недавно я получил предложения использовать span<T>их в своем коде или увидел здесь некоторые ответы на сайте, которые используют span- предположительно, какой-то контейнер. Но - я не могу найти ничего подобного в стандартной библиотеке C ++ 17. Так что же это за таинственное span<T>и почему (или когда) стоит использовать его, если …

3
Что такое оператор <=> в C ++?
В то время как я пытался узнать о C ++ операторов, я наткнулся на операторе странного сравнения на cppreference.com , * в таблице , которая выглядит следующим образом : «Ну, если это обычные операторы в C ++, я лучше их изучу», - подумал я. Но все мои попытки выяснить эту …

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

2
Обязан ли C ++ 20 хранить исходный код в файлах?
Однако немного странный вопрос, если я правильно помню, исходный код C ++ не требует файловой системы для хранения файлов. Наличие компилятора, который сканирует рукописные документы через камеру, было бы соответствующей реализацией. Хотя практически не имеет особого смысла. Однако C ++ 20 теперь добавляет расположение источника с расширением file_name. Означает ли …


3
Что такое сопрограммы в C ++ 20?
Что такое сопрограммы в c ++ 20? Чем он отличается от «Parallelism2» и / или «Concurrency2» (посмотрите на изображение ниже)? Изображение ниже взято из ISOCPP. https://isocpp.org/files/img/wg21-timeline-2017-03.png
104 c++  coroutine  c++20 

2
Почему std :: ssize () введен в C ++ 20?
C ++ 20 представил std::ssize()бесплатную функцию, как показано ниже: template &lt;class C&gt; constexpr auto ssize(const C&amp; c) -&gt; std::common_type_t&lt;std::ptrdiff_t, std::make_signed_t&lt;decltype(c.size())&gt;&gt;; Возможная реализация, похоже, использует static_castдля преобразования возвращаемого значения функции- size()члена cl ass C в ее подписанный аналог. Поскольку size()функция-член C всегда возвращает неотрицательные значения, зачем кому-то хранить их в переменных …
100 c++  stl  unsigned  signed  c++20 

4
Зачем нужны лямбда-выражения шаблона, представленные в C ++ 20, если в C ++ 14 уже есть общая лямбда-выражение?
c ++ 14 представили общие лямбды, которые позволили написать следующее: auto func = [](auto a, auto b){ return a + b; }; auto Foo = func(2, 5); auto Bar = func("hello", "world"); Совершенно очевидно, что эта общая лямбда funcработает так же, как и шаблонная функция func. Почему комитет C ++ …

2
Использует malloc для поведения int undefined до C ++ 20
Мне сказали, что следующий код имеет неопределенное поведение до C ++ 20: int *p = (int*)malloc(sizeof(int)); *p = 10; Это правда? Аргументом было то, что время жизни intобъекта не начинается до присвоения ему значения ( P0593R6 ). Для устранения проблемы newследует использовать размещение: int *p = (int*)malloc(sizeof(int)); new (p) int; …

3
Оператор равенства не определен для пользовательской реализации оператора космического корабля в C ++ 20
Я столкнулся со странным поведением с новым оператором космического корабля &lt;=&gt;в C ++ 20. Я использую компилятор Visual Studio 2019 с /std:c++latest. Этот код компилируется нормально, как и ожидалось: #include &lt;compare&gt; struct X { int Dummy = 0; auto operator&lt;=&gt;(const X&amp;) const = default; // Default implementation }; int main() …

2
Почему оператор! = Удален в C ++ 20 для многих стандартных типов библиотек?
Согласно cppreference , std::type_info::operator!=удаляется с C ++ 20, однако, по- std::type_info::operator==видимому, остается. В чем причина? Я мог бы согласиться с тем, что сравнивать неравенство бессмысленно, но тогда сравнивать равенство было бы так же бессмысленно, не так ли? Точно так же operator!=из многих других стандартных типов библиотек, включая контейнеры, такие как …


2
Назначенные инициализаторы в C ++ 20
У меня есть вопрос об одной из функций c ++ 20, назначенных инициализаторах (подробнее об этой функции здесь ) #include &lt;iostream&gt; constexpr unsigned DEFAULT_SALARY {10000}; struct Person { std::string name{}; std::string surname{}; unsigned age{}; }; struct Employee : Person { unsigned salary{DEFAULT_SALARY}; }; int main() { std::cout &lt;&lt; std::boolalpha &lt;&lt; …

3
какой случай использования для явного (bool)
В C ++ 20 введен явный (bool), который условно выбирает во время компиляции, сделан ли конструктор явным или нет. Ниже приведен пример, который я нашел здесь . struct foo { // Specify non-integral types (strings, floats, etc.) require explicit construction. template &lt;typename T&gt; explicit(!std::is_integral_v&lt;T&gt;) foo(T) {} }; foo a = …
24 c++  c++20  explicit 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.