Als «c++14» getaggte Fragen

C ++ 14 ist der Name des 2014 genehmigten C ++ - Standards. Er baut auf dem vorherigen C ++ 11-Standard auf, verbessert die Kernsprache und die Standardbibliothek und fügt einige Funktionen hinzu.


2
Was ist der Zweck einer Gewerkschaft mit nur einem Mitglied?
Als ich Seastar-Quellcode las , bemerkte ich, dass es eine Gewerkschaftsstruktur namens gibt, tx_sidedie nur ein Mitglied hat. Ist das ein Hack, um ein bestimmtes Problem zu lösen? Zu Ihrer Information, ich füge die folgende tx_sideStruktur ein: union tx_side { tx_side() {} ~tx_side() {} void init() { new (&a) aa; …
89 c++  c++14  unions 

5
Warum hat ein Lambda eine Größe von 1 Byte?
Ich arbeite mit der Erinnerung an einige Lambdas in C ++, aber ich bin ein bisschen verwirrt über ihre Größe. Hier ist mein Testcode: #include <iostream> #include <string> int main() { auto f = [](){ return 17; }; std::cout << f() << std::endl; std::cout << &f << std::endl; std::cout << …
89 c++  c++11  lambda  c++14  sizeof 

6
error :: make_unique ist kein Mitglied von 'std'
Ich versuche, das folgende Thread-Pool-Programm zu kompilieren, das bei der Codeüberprüfung veröffentlicht wurde, um es zu testen. /codereview/55100/platform-independant-thread-pool-v4 Aber ich bekomme die Fehler threadpool.hpp: In member function ‘std::future<decltype (task((forward<Args>)(args)...))> threadpool::enqueue_task(Func&&, Args&& ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique<task_package_impl<R, decltype(bound_task)>> (std::move(bound_task), std::move(promise)); ^ threadpool.hpp:94:81: …

3
Was ist const void?
Die Beschreibung von std::is_voidbesagt, dass: Gibt den Wert der Elementkonstante an, der gleich true ist, wenn T vom Typ void, const void, volatile void oder const volatile void ist. Was könnte dann sein const voidoder ein volatile void? Diese Antwort besagt, dass der const voidRückgabetyp ungültig wäre (kompiliert jedoch unter …
87 c++  c++11  c++14 

3
Standard-, Wert- und Null-Initialisierungs-Chaos
Ich bin sehr verwirrt über Wert- & Standard- & Null-Initialisierung. und vor allem, wenn sie sich für die verschiedenen Standards C ++ 03 und C ++ 11 (und C ++ 14 ) einsetzen. Ich zitiere und versuche, eine wirklich gute Antwort Value- / Default- / Zero-Init C ++ 98 und …
87 c++  c++11  c++14  c++03  c++98 


1
Wie emuliere ich EBO bei Verwendung von Rohspeicher?
Ich habe eine Komponente, die ich verwende, wenn ich generische Typen auf niedriger Ebene implementiere, die ein Objekt eines beliebigen Typs speichern (kann ein Klassentyp sein oder nicht), das leer sein kann, um die Optimierung der leeren Basis zu nutzen : template <typename T, unsigned Tag = 0, typename = …
79 c++  c++14 

3
Die Zuweisung in C ++ erfolgt trotz Ausnahme auf der rechten Seite
Ich habe einen (C ++ 14) Code, der so aussieht: map<int, set<string>> junk; for (int id : GenerateIds()) { try { set<string> stuff = GetStuff(); junk[id] = stuff; } catch (const StuffException& e) { ... } } Das funktioniert. Löst manchmal GetStuff()eine Ausnahme aus, die gut funktioniert, da ich dann …
73 c++  c++14 

4
C ++ 11: Std :: Array-Initialisierung korrigieren?
Wenn ich ein std :: -Array wie folgt initialisiere, warnt mich der Compiler vor fehlenden geschweiften Klammern std::array<int, 4> a = {1, 2, 3, 4}; Dies behebt das Problem: std::array<int, 4> a = {{1, 2, 3, 4}}; Dies ist die Warnmeldung: missing braces around initializer for 'std::array<int, 4u>::value_type [4] {aka …



3
Lambda-Verschluss-l-Werte können als r-Wert-Referenzparameter übergeben werden
Ich fand heraus, dass lvalueLambda-Verschlüsse immer als rvalueFunktionsparameter übergeben werden können. Siehe die folgende einfache Demonstration. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: passing a …

4
Fortlaufende Aufzählung C ++ 11
Gibt es eine Möglichkeit, in C ++ 11 zu überprüfen, ob eine Aufzählung fortlaufend ist ? Es ist voll gültig, eine Aufzählung anzugeben, die nicht sind. Gibt es möglicherweise eine Funktion wie ein Typmerkmal in C ++ 14, C ++ 17 oder C ++ 20, um zu überprüfen, ob die …
17 c++  c++11  c++14  c++17  c++20 

3
Führen Sie die Funktion innerhalb der Funktionsvorlage nur für die Typen aus, für die die Funktion definiert ist
Ich habe eine Funktionsvorlage, die viele verschiedene Typen als Eingabe verwendet. Von diesen Typen hat nur einer eine getInt()Funktion. Daher möchte ich, dass der Code die Funktion nur für diesen Typ ausführt. Bitte schlagen Sie eine Lösung vor. Vielen Dank #include <type_traits> #include <typeinfo> class X { public: int getInt(){ …

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.