Pytania otagowane jako c++17

C ++ 17 to nazwa standardu C ++ zatwierdzonego w 2017 roku. Opiera się on na poprzednim standardzie C ++ 14, ulepszając podstawowy język i standardową bibliotekę oraz dodając kilka nowych funkcji językowych.


4
Błąd konsolidatora Experimental :: filesystem
Staram się używać nowych funkcji c ++ 1z na czele rozwoju w gcc 6.0. Jeśli spróbuję tego małego przykładu: #include <iostream> #include <experimental/filesystem> namespace fs = std::experimental::filesystem; int main() { fs::path p1 = "/home/pete/checkit"; std::cout << "p1 = " << p1 << std::endl; } Mam: / opt / linux-gnu_6-20151011 / …
98 c++  gcc  c++17 

6
Po co używać std :: make_unique w C ++ 17?
O ile rozumiem, wprowadzono C ++ 14 std::make_unique, ponieważ w wyniku nieokreślenia kolejności oceny parametrów było to niebezpieczne: f(std::unique_ptr<MyClass>(new MyClass(param)), g()); // Syntax A (Wyjaśnienie: jeśli ocena najpierw przydzieli pamięć dla surowego wskaźnika, a następnie wywoła g()i wyjątek zostanie zgłoszony przed std::unique_ptrkonstrukcją, wtedy nastąpi wyciek pamięci). Dzwonienie std::make_uniquebyło sposobem na …
96 c++  c++17  unique-ptr 


3
Kiedy informacje o typach są cofane w C ++?
Właśnie oglądałem Stephan T. Lavavej w CppCon 2018programie „Class Template Argument Deduction”, gdzie w pewnym momencie mimochodem mówi: W C ++ informacje prawie nigdy nie płyną wstecz ... Musiałem powiedzieć „prawie”, ponieważ jest jeden lub dwa przypadki, prawdopodobnie więcej, ale bardzo niewiele . Pomimo próby ustalenia, do których przypadków może …

1
Jak działa gwarantowana eliminacja kopii?
Na spotkaniu Oulu ISO C ++ w 2016 r ., Komitet normalizacyjny przegłosował propozycję o nazwie Gwarantowane eliminowanie kopii poprzez uproszczone kategorie wartości w języku C ++ 17. Jak dokładnie działa gwarantowana eliminacja kopii? Czy obejmuje niektóre przypadki, w których usunięcie kopii było już dozwolone, czy też potrzebne są zmiany …

4
Czy eksperymentalne cechy nowoczesnego C ++ są niezawodne w długoterminowych projektach?
Mam projekt, który obecnie używa C ++ 11/14, ale wymaga czegoś takiego std::filesystem, co jest dostępne tylko w C ++ 17, stąd nie mam szansy, aby go obecnie używać. Widzę jednak, że jest dostępny w moim obecnym kompilatorze jako std::experimental::filesystem. Czy warto korzystać z funkcji eksperymentalnych, zakładając, że w przyszłości …

1
Czym są przewodniki po odliczaniu szablonów i kiedy powinniśmy ich używać?
Standard C ++ 17 wprowadza „przewodniki po odliczaniu szablonów”. Rozumiem, że mają one coś wspólnego z nową dedukcją argumentów szablonu dla konstruktorów wprowadzoną w tej wersji standardu, ale nie widziałem jeszcze prostego wyjaśnienia w stylu FAQ, czym one są i do czego służą. Jakie są przewodniki po odliczaniu szablonów w …

2
std :: ignore z powiązaniami strukturalnymi?
Preludium: std::tuple<int, int, int> f(); std::tuple<int, int, float, int> g(); C ++ 1z wprowadzi składnię powiązań strukturalnych, która umożliwi pisanie zamiast int a, b, c; std::tie(a, b, c) = f(); coś jak auto [a, b, c] = f(); Jednak można std::tierównież określić std::ignoreignorowanie niektórych komponentów, np .: std::tie(a, b, std::ignore, …



6
Inicjalizacja zmiennych w instrukcji „if”
Czytałem, że w C ++ 17 możemy inicjalizować zmienne w iftakich instrukcjach if (int length = 2; length == 2) //execute something Zamiast int length = 2; if (length == 2) //do something Mimo że jest krótszy, wpływa na czytelność kodu (szczególnie dla osób, które nie znają tej nowej funkcji), …
80 c++  c++17 


5
Jak uzyskać adres funkcji C ++ lambda w samej lambda?
Próbuję dowiedzieć się, jak uzyskać w sobie adres funkcji lambda. Oto przykładowy kod: []() { std::cout << "Address of this lambda function is => " << ???? }(); Wiem, że potrafię uchwycić lambda w zmiennej i wydrukować adres, ale chcę to zrobić w miejscu, gdy wykonuje się ta anonimowa funkcja. …
53 c++  c++11  lambda  c++14  c++17 

2
Dlaczego remove_reference nie działa na funkcje?
Wpadłem na coś dziwnego podczas wykonywania metaprogramowania szablonu innego dnia. Zasadniczo sprowadza się do tego twierdzenia, że ​​nie jest (jak się spodziewałbym) przemijanie. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); Na początku myślałem, że popełniam błąd składniowy, definiując odwołanie do funkcji, ale to twierdzenie mija, pokazując, że tak nie jest. static_assert(std::is_same_v<void()&, void()&>); Próbowałem też zaimplementować …
38 c++  templates  types  c++17 

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.