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.
W przeciwieństwie do wszystkich innych podobnych pytań, to pytanie dotyczy korzystania z nowych funkcji C ++. 2008 do Czy istnieje prosty sposób na konwersję wyliczenia C ++ na ciąg? 2008 do Łatwy sposób na użycie zmiennych typów wyliczeniowych jako łańcucha w C? 2008 c ++ Jak łatwo odwzorować wyliczenia c …
Ostatnio dostałem sugestie dotyczące użycia span<T>w moim kodzie lub widziałem tutaj odpowiedzi na stronie, które używają span- podobno jakiegoś kontenera. Ale - nie mogę znaleźć czegoś takiego w standardowej bibliotece C ++ 17. Czym jest to tajemnicze span<T>i dlaczego (lub kiedy) warto go używać, jeśli jest niestandardowy?
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, …
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: …
Jednak nieco dziwne pytanie, jeśli dobrze pamiętam, kod źródłowy C ++ nie wymaga systemu plików do przechowywania plików. Posiadanie kompilatora, który skanuje odręczne dokumenty za pomocą aparatu, byłoby zgodną implementacją. Chociaż praktycznie nie ma to większego sensu. Jednak C ++ 20 dodaje teraz lokalizację źródłową z file_name. Czy to teraz …
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
C ++ 20 wprowadził std::ssize()bezpłatną funkcję, jak poniżej: template <class C> constexpr auto ssize(const C& c) -> std::common_type_t<std::ptrdiff_t, std::make_signed_t<decltype(c.size())>>; 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ć …
c ++ 14 wprowadził generyczne lambdy, które umożliwiły napisanie: auto func = [](auto a, auto b){ return a + b; }; auto Foo = func(2, 5); auto Bar = func("hello", "world"); Jest bardzo jasne, że ta ogólna lambda funcdziała tak, jak działałaby funkcja szablonowa func. Dlaczego komisja C ++ zdecydowała …
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 …
Napotykam dziwne zachowanie z nowym operatorem statku kosmicznego <=>w C ++ 20. Korzystam z kompilatora Visual Studio 2019 z /std:c++latest. Ten kod kompiluje się zgodnie z oczekiwaniami: #include <compare> struct X { int Dummy = 0; auto operator<=>(const X&) const = default; // Default implementation }; int main() { X …
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 …
Mam pytanie dotyczące jednej z funkcji c ++ 20, wyznaczonych inicjatorów (więcej informacji o tej funkcji tutaj ) #include <iostream> 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 << std::boolalpha << std::is_aggregate_v<Person> …
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 <typename T> explicit(!std::is_integral_v<T>) foo(T) {} }; foo a = 123; …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.