Als «c++11» getaggte Fragen

Verwenden Sie dieses Tag für Code, der als C ++ 11 kompiliert werden muss (ohne die in C ++ 14 oder höher eingeführten Funktionen zu verwenden).


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 …

1
void_t "kann Konzepte implementieren"?
Ich habe den zweiten Teil von Walter Browns CppCon2014-Vortrag über Template-Metaprogrammierung gesehen , in dem er die Verwendung seiner neuartigen void_t<>Konstruktion diskutierte . Während seines Vortrags stellte Peter Sommerlad ihm eine Frage, die ich nicht ganz verstand. (Link geht direkt auf die Frage, der diskutierte Code fand direkt davor statt) …

3
Ist dieses Verhalten von std :: ref logisch?
Betrachten Sie diesen Code: #include <iostream> #include <functional> int xx = 7; template<class T> void f1(T arg) { arg += xx; } template<class T> void f2(T arg) { arg = xx; } int main() { int j; j=100; f1(std::ref(j)); std::cout << j << std::endl; j=100; f2(std::ref(j)); std::cout << j << …
68 c++  c++11  ref 


3
C ++ - Dekltyp und Klammern - warum?
Das Thema wurde diskutiert vor , aber dies ist kein Duplikat. Wenn jemand nach dem Unterschied zwischen decltype(a)und fragt , lautet decltype((a))die übliche Antwort: - aist eine Variable, (a)ist ein Ausdruck. Ich finde diese Antwort unbefriedigend. Erstens aist auch ein Ausdruck. Die Optionen für einen primären Ausdruck umfassen unter anderem: …

6
Ist es sicher, zwei verschiedene Vektoren in C ++ mit der Methode std :: vector :: swap auszutauschen?
Angenommen, Sie haben den folgenden Code: #include <iostream> #include <string> #include <vector> int main() { std::vector<std::string> First{"example", "second" , "C++" , "Hello world" }; std::vector<std::string> Second{"Hello"}; First.swap(Second); for(auto a : Second) std::cout << a << "\n"; return 0; } Stellen Sie sich vor, der Vektor ist noch std::stringkeine Klasse: std::vector<Widget> …
30 c++  c++11  vector  stdvector  swap 



3
Verhaltensunterschied der veränderlichen Erfassung der Lambda-Funktion von einem Verweis auf eine globale Variable
Ich habe festgestellt, dass die Ergebnisse bei Compilern unterschiedlich sind, wenn ich ein Lambda verwende, um einen Verweis auf eine globale Variable mit einem veränderlichen Schlüsselwort zu erfassen und dann den Wert in der Lambda-Funktion zu ändern. #include <stdio.h> #include <functional> int n = 100; std::function<int()> f() { int &m …

2
Welche Zufallszahlen-Engines von <random> sollte man in der Praxis tatsächlich verwenden? std :: mt19937?
Angenommen, Sie möchten C ++ - Funktionen &lt;random&gt;in einem praktischen Programm verwenden (für eine Definition von "praktisch" - die Einschränkungen hier sind Teil dieser Frage). Sie haben ungefähr folgenden Code: int main(int argc, char **argv) { int seed = get_user_provided_seed_value(argc, argv); if (seed == 0) seed = std::random_device()(); ENGINE g(seed); …
21 c++  c++11  random 

4
Wie rufe ich den richtigen Konstruktor eines Vorlagentyps auf?
Wie kann ich im folgenden Code dafür sorgen, dass die kommentierte Zeile genauso funktioniert wie die Zeile direkt darüber? Ich möchte daraus einen generischen Code machen, der einen geeigneten Konstruktor einer Vorlage aufruft Type. #include &lt;string&gt; #include &lt;iostream&gt; template &lt;typename Type&gt; struct Class { Type data; Class(Type data) : data(data) …

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 

2
Ist das ein alter Konstruktor im C ++ - Stil?
Hier ein Stück C ++ - Code. In diesem Beispiel sehen viele Codeblöcke wie Konstruktoraufrufe aus. Blockcode 3 ist dies leider nicht (Sie können ihn mit https://godbolt.org/z/q3rsxn und https://cppinsights.io überprüfen ). Ich denke, es ist eine alte C ++ - Notation und könnte die Einführung der neuen C ++ 11-Konstruktionsnotation …
17 c++  c++11 

3
Variadische Vorlagen: Entfalten Sie Argumente in Gruppen
Ich habe eine Funktion, die zwei Argumente akzeptiert: template &lt;typename T1, typename T2&gt; void foo(T1 arg1, T2 arg2) { std::cout &lt;&lt; arg1 &lt;&lt; " + " &lt;&lt; arg2 &lt;&lt; '\n'; } Und eine Variante, die ihre Argumente paarweise weiterleiten sollte: template &lt;typename... Args&gt; void bar(Args&amp;&amp;... args) { static_assert(sizeof...(Args) % 2 …

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.