c++17

Dlaczego warto używać std:: make unique w C++17?

Z tego co rozumiem, C++14 wprowadził std::make_unique, ponieważ w wyniku nie sprecyzowania kolejności oceny parametru było to ... kompatybilności), ale raczej zastanawiam się, czy nadal są sytuacje, w których jest zdecydowanie preferowane std::unique_ptr

Czym są przewodniki dedukcyjne szablonów i kiedy powinniśmy z nich korzystać?

Standard C++17 wprowadza "Przewodniki dedukcyjne szablonów". Domyślam się, że są one związane z nowym argumentem szablonu dla ... są i do czego służą. Czym są przewodniki po szablonach w C++17? Dlaczego (i kiedy) są nam potrzebne? Jak je zadeklarować?

reinterpretacja rzutu tworzenie trywialnie domyślnego obiektu

Cppreference† stwierdza, że: Obiekty z trywialnymi domyślnymi konstruktorami mogą być tworzone za pomocą reinterpret_cas ... loc: placement-new jest wymagana, aby formalnie wprowadzić nowy obiekt i uniknąć potencjalnego niezdefiniowanego zachowania.

Różnica między "if constexpr ()" a " if()"

Jaka jest różnica między if constexpr() a if()? Gdzie i kiedy mogę użyć obu?

Zmienione reguły dla konstruktorów chronionych w C++17?

Mam ten przypadek testowy: struct A{ protected: A(){} }; struct B: A{}; struct C: A{ C(){} }; struct D: A{ D() = default; } ... LITY or FITNESS FOR A PARTICULAR PURPOSE. Czy ta zmiana zachowania jest częścią C++17 czy jest to błąd w obu kompilatorach?

Składanie Szablonów C++17

Nie rozumiem, dlaczego to nie działa. Czy ktoś, kto rozumie szablony i zmienne składanie wyrażeń, może wyjaśnić o co chodzi i ... ersza na końcu. To działa, jeśli usuniesz sep <<, ale wtedy nie ma spacji między każdym argumentem, gdy jest drukowany.

Czy algorytmy równoległe C++17 są już zaimplementowane?

Próbowałem bawić się nowymi funkcjami bibliotek równoległych zaproponowanymi w standardzie C++17, ale nie mogłem go uruchomić ... tały jeszcze zaimplementowane. Ale do tej pory spodziewałbym się, że zobaczę jakąś implementację. Możemy już coś wykorzystać?

Najprostszy sposób określenia typu zwracanego funkcji

Podano bardzo prostą, ale długotrwałą funkcję, np.: int foo(int a, int b, int c, int d) { return 1; } // using ReturnT ... ez powtarzania typów parametrów funkcji (tylko z nazwy, ponieważ wiadomo, że funkcja nie ma żadnych dodatkowych przeciążeń)?

Jak efektywnie uzyskać` string view 'dla fragmentu' std:: string`

Używając http://en.cppreference.com/w/cpp/string/basic_string_view jako odniesienie, nie widzę sposobu, aby zrobić to bardz ... ić, jest używanie aliasów, aby po prostu uczynić rzeczy mniej gadatliwymi. using sv = std::string_view; sv(s).substr(6, 5);

Zrozumienie std:: hardware destructive interference size and std:: hardware constructive interference size

C++17 dodany std::hardware_destructive_interference_size oraz std::hardware_constructive_interference_size. Po pierwsze, myśl ... ronić przed fałszywym udostępnianiem w tym scenariuszu, gdy nie jesteś pewien, na którym komputerze będzie działał Twój kod?

std:: lock guard czy STD:: scoped lock?

C++17 wprowadził nową klasę lock o nazwie std::scoped_lock. Sądząc po dokumentacji, wygląda ona podobnie do istniejącej już klasy std::lock_guard. Jaka jest różnica i kiedy powinienem go użyć?

Zrobić funkcję akceptującą opcjonalne, aby zaakceptować nieobowiązkowe?

Próbuję napisać składniowy cukier, w stylu monadowym, nad std::optional. Proszę wziąć pod uwagę: template<class T> vo ... sz funkcje binarne, takie jak operator+(optional, optional), i jest bólem dla funkcji trójargumentowych, 4-ary, itd. funkcje.

Czy można sprawdzić, czy funkcja constexpr jest oceniana podczas kompilacji?

Od rozszerzonych wersji constexpr (myślę, że z C++14) Można zadeklarować constexpr funkcje, które mogą być używane jako "praw ... mpilacji lub w czasie wykonywania? EDIT: również czy można wiedzieć w runtime jeśli funkcja była oceniana podczas kompilacji?

Czy STD:: memcpy pomiędzy różnymi typami kopiowalnymi jest niezdefiniowanym zachowaniem?

Od dawna używam std::memcpy do ominięcia ścisłego aliasingu. Na przykład sprawdzanie float, Jak to : float f = ...; uint3 ... odpowiedzieć na to pytanie. Z tego co wiem, mógłbym zastąpić std::memcpy prostą pętlą byte-copy i pytanie będzie takie samo.

experimental:: błąd linkera systemu plików

Staram się używać nowych funkcji c++1Z faktycznie na głowie rozwoju w GCC 6.0. Jeśli spróbuję tego małego przykładu: #incl ... returned 1 exit status Wersja Gcc to snapshot linux-gnu_6-20151011 Jakieś wskazówki jak linkować do nowych funkcji c++1z?

Zmienne oznaczone jako const przy użyciu wiązań strukturalnych nie są const

Pisałem zestaw klas, aby umożliwić prostą funkcję podobną do Pythona zip. Poniższy fragment działa (prawie) zgodnie z oczekiw ... endl; a = 2; // I expected this to give a compiler error, but it does not std::cout << a << std::endl; }

Jak napisać funkcję constexpr swap, aby zmienić endianess liczby całkowitej?

Jak napisać constexpr funkcję do zamiany endianess liczby całkowitej, bez polegania na rozszerzeniach kompilatora i czy możesz podać przykład jak to zrobić?

Jak zamawiać typy w czasie kompilacji?

Rozważ następujący program: #include <tuple> #include <vector> #include <iostream> #include <type_trai ... ci (niezależnie od tej kolejności). Czy można to zrobić w czasie kompilacji przy użyciu technik metaprogramowania szablonów?

Czy C++11, 14, 17 lub 20 wprowadza stałą standardową dla pi?

Jest dość głupi problem z liczbą pi w C i C++. Z tego co wiem M_PI zdefiniowane w {[1] } nie jest wymagane przez żadną normę. ... łe matematyczne) została przyjęta do C++20. Wygląda więc na to, że w końcu będziemy mieli numer pi w bibliotece standardowej!

Dlaczego yield nie został dodany do C++0x?

Używałem yield w wielu moich programach Pythona i to naprawdę czyści kod w wielu przypadkach. Ja blogowałem o tym i jest to ... } } } } Wywóz śmieci? Nie. Nici? Nie. Włókna? Nie. Prosta transformacja? Prawdopodobnie tak.