Articles of c ++ 11

Ist es eine konforme Compiler-Erweiterung, um Nicht-Constexpr-Standard-Bibliotheksfunktionen als Constexpr zu behandeln?

gcc kompiliert den folgenden Code ohne Warnung: #include struct foo { static constexpr double a = std::cos(3.); static constexpr double c = std::exp(3.); static constexpr double d = std::log(3.); static constexpr double e1 = std::asin(1.); static constexpr double h = std::sqrt(.1); static constexpr double p = std::pow(1.3,-0.75); }; int main() { } Keine der oben […]

Flattering Iterator

Gibt es eine vorhandene Iterator-Implementierung (vielleicht in Boost), die eine Art Flattering-Iterator implementiert? Beispielsweise: unordered_set<vector > s; s.insert(vector()); s.insert({1,2,3,4,5}); s.insert({6,7,8}); s.insert({9,10,11,12}); flattening_iterator<unordered_set<vector >::iterator> it( … ), end( … ); for(; it != end; ++it) { cout << *it << endl; } //would print the numbers 1 through 12

Wann wird eine constexpr-function zur Kompilierzeit ausgewertet?

Da es möglich ist, dass während der Laufzeit eine als conexpr deklarierte function aufgerufen wird, unter welchen Kriterien entscheidet der Compiler, ob er zur Kompilierzeit oder zur Laufzeit berechnet wird? template constexpr base_t POW(base_t base, expo_t expo) { return (expo != 0 )? base * POW(base, expo -1) : 1; } int main(int argc, char** […]

Warum kann das Übergeben von Objektreferenzargumenten an die Threadfunktion nicht kompiliert werden?

Ich bin zu einem Problem mit der neuen C ++ 11 std::thread Schnittstelle gekommen. Ich kann nicht herausfinden, wie man einen Verweis auf einen std::ostream an die function std::ostream , die der Thread ausführen wird. Hier ist ein Beispiel mit der Übergabe einer Ganzzahl (kompiliere und arbeite wie erwartet unter gcc 4.6): void foo(int &i) […]

Die Auflösung von std :: chrono :: high_resolution_clock entspricht nicht den Messungen

Lassen Sie mich meine Frage mit diesem Testprogramm stellen: #include #include using std::chrono::nanoseconds; using std::chrono::duration_cast; int main(int argc, char* argv[]) { std::cout << "resolution (nano) = " << (double) std::chrono::high_resolution_clock::period::num / std::chrono::high_resolution_clock::period::den * 1000 * 1000 * 1000 << std::endl; auto t1 = std::chrono::high_resolution_clock::now(); std::cout << "how much nanoseconds std::cout takes?" << std::endl; auto t2 […]

Was sind Inline-Namespaces?

C ++ 11 erlaubt inline namespace , deren Member ebenfalls automatisch im umschließenden namespace . Ich kann mir keine sinnvolle Anwendung vorstellen – kann jemand bitte ein kurzes, prägnantes Beispiel für eine Situation geben, in der ein inline namespace benötigt wird und wo es die idiomatische Lösung ist? (Es ist mir auch nicht klar, was […]

C ++ ist wieder am ärgerlichsten Parse

Genommen direkt von http://herbsutter.com/2013/05/09/gotw-1-solution/ Während widget w(); ist klar für mich, ich habe keine Ahnung, wie der folgende Code eine functionserklärung sein kann? // same problem (gadget and doodad are types) // widget w( gadget(), doodad() ); // pitfall: not a variable declaration Wie ist das möglich?

Wann sollten Sie in C ++ 11 constexpr verwenden?

Es scheint mir, dass eine “function, die immer 5 zurückgibt”, die Bedeutung von “Aufruf einer function” bricht oder verwässert. Es muss einen Grund oder eine Notwendigkeit für diese Fähigkeit geben oder es wäre nicht in C ++ 11. Warum ist es da? // preprocessor. #define MEANING_OF_LIFE 42 // constants: const int MeaningOfLife = 42; // […]

C ++ 11 make_pair mit angegebenen Vorlagenparametern wird nicht kompiliert

Ich spielte gerade mit g ++ 4.7 (einer der späteren Schnappschüsse) mit -std = C ++ 11 aktiviert. Ich habe versucht, einige meiner bestehenden Code-Basis zu kompilieren und ein Fall, der fehlgeschlagen ist, verwirrt mich. Ich würde mich freuen, wenn jemand erklären kann, was vor sich geht. Hier ist der Code #include #include #include #include […]

Wann sollte ich wirklich noexcept verwenden?

Das noexcept Schlüsselwort kann auf viele functionssignaturen angemessen angewendet werden, aber ich bin unsicher, wann ich es in der Praxis in Erwägung ziehen sollte. Basierend auf dem, was ich bisher gelesen habe, scheint die letzte Ergänzung von noexcept einige wichtige Probleme anzugehen, die entstehen, wenn Move-Konstruktoren casting. Ich bin jedoch immer noch nicht in der […]