Запитання з тегом «c++20»

C ++ 20 - ціль для версії C ++ після C ++ 17. Цей тег слід використовувати (разом із тегом C ++) для запитань щодо функцій C ++, відстежуваних для C ++ 20.

28
перерахувати на рядок у сучасних C ++ 11 / C ++ 14 / C ++ 17 та майбутніх C ++ 20
На відміну від усіх інших подібних питань, це питання стосується використання нових функцій C ++. 2008 рік c Чи є простий спосіб перетворити перерахунок C ++ у рядок? 2008 рік c Простий спосіб використання змінних типів enum як рядка в C? 2008 рік c ++ Як легко зіставити c ++ …
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? Чим він відрізняється від «Паралелізму2» або / та «Конкурсу2» (дивіться нижче на зображення)? Зображення нижче від ISOCPP. https://isocpp.org/files/img/wg21-timeline-2017-03.png
104 c++  coroutine  c++20 

2
Чому в C ++ 20 вводиться std :: ssize ()?
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 завжди повертає негативні значення, чому б хто-небудь хотів зберігати …
99 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 до C ++ 20
Мені сказали, що наступний код має невизначену поведінку до С ++ 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!=з багатьох інших стандартних типів бібліотек, включаючи контейнери, такі як std::unordered_map::operator!=та std::unordered_set::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; …


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.