Pytania otagowane jako c++20

C ++ 20 jest celem wersji C ++ po C ++ 17. Tego znacznika należy używać (wraz ze znacznikiem C ++) w pytaniach dotyczących funkcji C ++ na ścieżce dla C ++ 20.



3
Co to jest operator <=> w C ++?
Chociaż starałem się dowiedzieć o c ++ operatorów, natknąłem się na dziwny operator porównania na cppreference.com , * w tabeli, która wyglądała tak: „Cóż, jeśli są to popularne operatory w C ++, lepiej się ich uczę” - pomyślałem. Ale wszystkie moje próby wyjaśnienia tej tajemnicy zakończyły się niepowodzeniem. Nawet tutaj, …

5
Dlaczego wymagamy wymagań?
Jednym z rogów koncepcji C ++ 20 jest to, że są pewne sytuacje, w których musisz pisać requires requires. Na przykład ten przykład z [wyr.prim.req] / 3 : Wymaga ekspresja może być również stosowany w wymaga-klauzula ([temp]) jako sposób pisania ograniczenia ad hoc dotyczący argumentów szablonu, takich jak ten poniżej: …
161 c++  c++-concepts  c++20 



3
Co to są programy w C ++ 20?
Co to są programy w c ++ 20? Czym różni się od „Parallelism2” i / lub „Concurrency2” (spójrz na poniższą ilustrację)? Poniższy obraz pochodzi z ISOCPP. https://isocpp.org/files/img/wg21-timeline-2017-03.png
104 c++  coroutine  c++20 

2
Dlaczego w C ++ 20 wprowadzono std :: ssize ()?
C ++ 20 wprowadził std::ssize()bezpłatną funkcję, jak poniżej: 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;; Wydaje się static_cast, że możliwa implementacja polega na przekształceniu wartości zwracanej size()funkcji składowej klasy C na jej podpisany odpowiednik. Ponieważ size()funkcja składowa C zawsze zwraca wartości nieujemne, dlaczego ktoś miałby chcieć …
99 c++  stl  unsigned  signed  c++20 


2
Używa malloc do niezdefiniowanego zachowania int do C ++ 20
Powiedziano mi, że następujący kod ma niezdefiniowane zachowanie do C ++ 20: int *p = (int*)malloc(sizeof(int)); *p = 10; Czy to prawda? Argumentem było to, że czas życia intobiektu nie jest uruchamiany przed przypisaniem mu wartości ( P0593R6 ). Aby rozwiązać problem, newnależy użyć umieszczenia: int *p = (int*)malloc(sizeof(int)); new …

3
Operator równości nie został zdefiniowany dla niestandardowej implementacji operatora statku kosmicznego w C ++ 20
Napotykam dziwne zachowanie z nowym operatorem statku kosmicznego &lt;=&gt;w C ++ 20. Korzystam z kompilatora Visual Studio 2019 z /std:c++latest. Ten kod kompiluje się zgodnie z oczekiwaniami: #include &lt;compare&gt; struct X { int Dummy = 0; auto operator&lt;=&gt;(const X&amp;) const = default; // Default implementation }; int main() { X …

2
Dlaczego operator! = Usunięto w C ++ 20 dla wielu standardowych typów bibliotek?
Zgodnie z cppreference , std::type_info::operator!=zostaje usunięty z C ++ 20, jednak std::type_info::operator==najwyraźniej pozostaje. Jakie jest uzasadnienie? Mógłbym się zgodzić na to, że porównywanie nierówności byłoby pozbawione sensu, ale wtedy porównywanie dla równości byłoby równie samo pozbawione znaczenia, prawda? Podobnie, operator!=wiele innych standardowych typów bibliotek, w tym kontenery takie jak std::unordered_map::operator!=i …


2
Wyznaczone inicjalizatory w C ++ 20
Mam pytanie dotyczące jednej z funkcji c ++ 20, wyznaczonych inicjatorów (więcej informacji o tej funkcji tutaj ) #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; std::is_aggregate_v&lt;Person&gt; …

3
jaki jest przypadek użycia jawnego (bool)
C ++ 20 wprowadził jawne (bool), które warunkowo wybiera w czasie kompilacji, czy konstruktor jest jawny, czy nie. Poniżej znajduje się przykład, który znalazłem tutaj . 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 = 123; …
24 c++  c++20  explicit 

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.