c++17

enum to string in modern C++11 / C++14 / C++17 and future C++20

W przeciwieństwie do innych podobnych pytań, to pytanie dotyczy korzystania z nowych funkcji C++. 2008 c czy istnieje prost ... du C++ w czasie kompilacji za pomocą sztuczek meta-programowania opartych na funkcjach variadic template class i constexpr...

Jak zaimplementować Coroutines w C++

Wątpię, że da się to zrobić przenośnie, ale czy są jakieś rozwiązania? Myślę, że można to zrobić, tworząc alternatywny stos ... SP+BP. Destruktory i bezpieczeństwo WYJĄTKÓW wydają się trudne, ale rozwiązywalne. Czy to już zrobione? Czy to niemożliwe?

Co to jest string view?

string_view w 2007 roku, w ramach projektu C++ Library Fundamentals TS(N3921) została dodana do C++17 O ile rozumiem, jest ... std::string& parametr type become string_view? czy jest jeszcze jeden ważny punkt o string_view do wzięcia pod uwagę ?

Jaki jest cel std:: launder?

P0137 wprowadza szablon funkcji std::launder i wprowadza wiele, wiele zmian do standardu w sekcjach dotyczących związków, ży ... w. Jaki jest problem, który rozwiązuje ten artykuł? Jakie są zmiany w języku, których muszę być świadomy? A o co nam chodzi?

Co sprawiło, że i = i++ + 1; legalne w C++17?

Zanim zaczniesz krzyczeć nieokreślone zachowanie, jest to jawnie wymienione w N4659 (C++17) i = i++ + 1; // the va ... est ani "innym efektem ubocznym", ani "używanie wartości tego samego obiektu skalarnego", ponieważ ID-wyrażenie jest lvalue.

Jak dokładnie std::string view jest szybszy niż const std:: string&?

std::string_view do C++17 i jest powszechnie zalecane, aby używać go zamiast const std::string&. Jednym z powodów jest w ... w Jest / będzie szybszy niż const std::string&, gdy jest używany jako typ parametru? (Załóżmy, że nie ma kopii w callee)

alokator polimorficzny: kiedy i dlaczego powinienem go używać?

Tutaj {[8] } znajduje się dokumentacja cppreference, tutaj jest roboczy szkic. Muszę przyznać, że nie rozumiałem, jaki jest ... mogę teraz zrobić, czego nie mogłem zrobić do tej pory? Co to jest prawdziwy cel tego alokatora i kiedy powinienem go używać?

Najbardziej elegancki sposób na napisanie "jeśli"

Od C++ 17 można napisać if blok, który zostanie wykonany dokładnie raz w ten sposób: #include <iostream> int main() { ... śli chciałbym użyć tej samej funkcji w różnych miejscach? Czy to może być czas i miejsce dla a #define? Mam nadzieję, że nie.

Lambda wraca Sama: czy to jest legalne?

Rozważ ten dość bezużyteczny program: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it ... lambda sama się zwróciła, ale o legalność tego konkretnego sposobu działania. Podobne pytanie: C++ lambda zwraca się sam .

Jak działa guaranteed copy elision?

W 2016 roku na spotkaniu Oulu ISO C++ Standards meeting, propozycja o nazwie gwarantowana Kopia elision poprzez uproszczone k ... które przypadki, w których kopiowanie było już dozwolone, czy też konieczne są zmiany w kodzie, aby zagwarantować kopiowanie?

Zalety auto w parametrach szablonu w C++17

Jakie są zalety auto w parametrach szablonu, które (ewentualnie) zostaną wprowadzone w C++17? Czy jest to tylko naturalne ro ... bool auto v3 = constant<'a'>; // v3 == 'a', decltype(v3) is char Co jeszcze zyskuję dzięki tej funkcji językowej?

Czy wskaźnik o odpowiednim adresie i typie nadal jest zawsze poprawnym Wskaźnikiem od C++17?

(w odniesieniu do tego pytania i odpowiedzi .) Przed standardem C++17, w [basic.związek]/3: Jeśli obiekt typu T znajduj ... rpretacja tej modyfikacji prawa standardowego, czy też istnieją inne zasady, które rekompensują skreślenie cytowanego zdania?

Przeciążanie wielu obiektów funkcyjnych przez odniesienie

W C++17 trywialne jest zaimplementowanie overload(fs...) funkcji, która, biorąc pod uwagę dowolną liczbę argumentów fs... spe ... aca nowy obiekt funkcji, który zachowuje się jak przeciążenie fs..., ale odwołuje się do fs... zamiast kopiować/przenosić je?

Zachowanie C++20 łamanie istniejącego kodu operatorem równości?

Wpadłem na to podczas debugowania to pytanie . Przyciąłem go do samego użycia operatorów Boost : Compiler Explorer C++17 ... szkadza? Podejrzewam, że może to być spowodowane nową obsługą c++20, ale nie rozumiem Jak zmienia to zachowanie tego kodu.

Czy stateful metaprogramming jest źle uformowane (jeszcze)?

Jednym z moich najbardziej ukochanych/złych wynalazków, na które miałem fortunę, jest constexpr counter, aka stateful metapr ... This is ridiculous"); To tak przy okazji, jest bezpośrednią sprzecznością z przechowywaniem stanów w Metaprogramowaniu C++?

Ogranicz zmienne argumenty szablonu

Czy możemy ograniczyć zmienne argumenty szablonu do określonego typu? Tzn. osiągnąć coś takiego (nie prawdziwe C++ Oczywiście ... ametrów. Najbliższe mamy to: template <class... Args> auto foo(Args... args) Ale to akceptuje każdy typ parametru.

Jak nowa pętla range-based for W C++17 pomaga zakresom TS?

Komitet zmienił zakres oparty na pętli z: C++11: { auto && __range = range_expression ; for (auto __begi ... loop_statement } } A ludzie mówili, że to ułatwi implementację zakresów TS. Możesz mi podać jakieś przykłady?

Jakie są gwarancje zlecenia ewaluacji wprowadzone przez C++17?

Jakie są konsekwencje głosowania w C++17 (P0145) na typowy kod C++? Co to zmienia w takich rzeczach jak i=1; f(i++, i) I std::cout << f() << f() << f() ; Lub f(g(),h(),j());

Jak działają zmienne inline?

W 2016 roku Oulu ISO C++ Standards meeting, wniosek o nazwie Inline Variables został przegłosowany do C++17 przez Komitet Nor ... nne inline, jak działają i do czego są przydatne? W jaki sposób należy deklarować, definiować i używać zmiennych wbudowanych?

Jak uzyskać adres funkcji lambda C++ wewnątrz samej lambda?

Próbuję dowiedzieć się, jak uzyskać adres funkcji lambda w sobie. Oto przykładowy kod: []() { std::cout << "Addre ... i wydrukować adres, ale chcę to zrobić w miejscu, gdy ta anonimowa funkcja jest wykonywana. Czy jest na to prostszy sposób?