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).

2
Wann wirken sich zusätzliche Klammern anders als auf die Priorität des Operators aus?
Klammern in C ++ werden an vielen Stellen verwendet: z. B. in Funktionsaufrufen und Gruppierungsausdrücken, um die Priorität von Operatoren zu überschreiben. Abgesehen von illegalen zusätzlichen Klammern (wie z. B. Argumentlisten für Funktionsaufrufe) ist eine allgemeine, aber nicht absolute Regel von C ++, dass zusätzliche Klammern niemals schaden : 5.1 …


3
Explizite Rückgabe Typ von Lambda
Wenn ich versuche, diesen Code (VS2010) zu kompilieren, wird folgende Fehlermeldung angezeigt: error C3499: a lambda that has been specified to have a void return type cannot return a value void DataFile::removeComments() { string::const_iterator start, end; boost::regex expression("^\\s?#"); boost::match_results<std::string::const_iterator> what; boost::match_flag_type flags = boost::match_default; // Look for lines that either …




3
Wie erzwinge ich die Bewegungssemantik, wenn ein Vektor wächst?
Ich habe std::vectorObjekte einer bestimmten Klasse A. Die Klasse ist nicht trivial und hat Kopierkonstruktoren und Verschiebungskonstruktoren definiert. std::vector<A> myvec; Wenn ich den Vektor mit AObjekten fülle (z. B. myvec.push_back(a)), wird der Vektor größer und verwendet den Kopierkonstruktor A( const A&), um neue Kopien der Elemente im Vektor zu instanziieren. …

4
Übergeben von shared_ptr <Derived> als shared_ptr <Base>
Was ist die beste Methode, um shared_ptreinen abgeleiteten Typ an eine Funktion zu übergeben, die shared_ptreinen Basistyp verwendet? Ich übergebe im Allgemeinen shared_ptrs als Referenz, um eine unnötige Kopie zu vermeiden: int foo(const shared_ptr&lt;bar&gt;&amp; ptr); aber das funktioniert nicht, wenn ich versuche, so etwas zu tun int foo(const shared_ptr&lt;Base&gt;&amp; ptr); …

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 &lt;iostream&gt; #include &lt;string&gt; int main() { auto f = [](){ return 17; }; std::cout &lt;&lt; f() &lt;&lt; std::endl; std::cout &lt;&lt; &amp;f &lt;&lt; std::endl; std::cout &lt;&lt; …
89 c++  c++11  lambda  c++14  sizeof 

3
So erstellen Sie ein bedingtes typedef in C ++
Ich versuche so etwas zu tun: #include &lt;iostream&gt; #include &lt;random&gt; typedef int Integer; #if sizeof(Integer) &lt;= 4 typedef std::mt19937 Engine; #else typedef std::mt19937_64 Engine; #endif int main() { std::cout &lt;&lt; sizeof(Integer) &lt;&lt; std::endl; return 0; } aber ich bekomme diesen Fehler: error: missing binary operator before token "(" Wie kann …
89 c++  c++11 

4
Warum kein Standard-Verschiebungszuweisungs- / Verschiebungskonstruktor?
Ich bin ein einfacher Programmierer. Die Variablen meiner Klassenmitglieder bestehen meistens aus POD-Typen und STL-Containern. Aus diesem Grund muss ich selten Zuweisungsoperatoren oder Kopierkonstruktoren schreiben, da diese standardmäßig implementiert sind. Wenn ich std::moveObjekte verwende, die nicht beweglich sind, wird der Zuweisungsoperator verwendet, was bedeutet, dass dies std::moveabsolut sicher ist. Da …



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&lt;decltype (task((forward&lt;Args&gt;)(args)...))&gt; threadpool::enqueue_task(Func&amp;&amp;, Args&amp;&amp; ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique&lt;task_package_impl&lt;R, decltype(bound_task)&gt;&gt; (std::move(bound_task), std::move(promise)); ^ threadpool.hpp:94:81: …


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.