2017-10-10 1 views
2

In meinem Projekt verwende ich boost::asio für Netzwerk- und Thread-Management. Ich möchte einige Funktionen von modernem C++ verwenden, zum Beispiel gemeinsame Zeiger.Soll ich Boost oder die C++ 11 Standardbibliothek bevorzugen, wenn ich Boost bereits verwende?

Es gibt zwei Möglichkeiten: boost::shared_ptr, da ich bereits Boost verwende, und std::shared_ptr, da ich einen C++ 11 Compiler verwende. Soweit ich verstehe, sind diese grundsätzlich gleichwertig, jedoch sind sie miteinander unvereinbar.

Ich habe gelesen, dass ich die Standard-Bibliothek Komponenten über Boost bevorzugen sollte, um eine externe Abhängigkeit sinnlos zu verwenden. Allerdings werde ich immer noch Boost verwenden (zumindest bis sie ASIO in die Standardbibliothek integrieren), also benötige ich immer noch diese Abhängigkeit.

Gemeinsame Zeiger sind nur ein Beispiel, gilt diese Frage auf alle Funktionen, die die Standard-Bibliothek von Boost-übernahmen, wie function, bind, thread usw.

meine Situation gegeben, das ist die bevorzugte Implementierung das Merkmal? Gibt es irgendwelche Fehler in Bezug auf die Auswahl, wo ich entweder die Boost- oder Standard-Bibliotheksversion speziell verwenden müsste, wenn ich einige der anderen Boost- oder Standard-Bibliothekskomponenten verwende?

+0

Was wäre ein Grund, die Boost-Alternative zu verwenden, wenn Sie dasselbe aus der Standard-Lib erhalten können? Ich kenne keine – user463035818

+0

Meinung basiert? Vielleicht bin ich eine dogmatische alte Katze, aber die gegenteilige Meinung zu meinen hat keine Gültigkeit. Daher ist eine Antwort konkret. – Bathsheba

+0

Wenn eine Meinung über die Verwendung eines Standards eine Standardmeinung ist, sollte es nicht einfach ein Standard sein? – AOK

Antwort

6

Obwohl Boost ist die De-facto-Zuführung für zukünftige C++ - Standards, ist es nicht standardisiert, so dass Sie immer der Kompatibilitätsbrüche ausgeliefert sind, wenn Sie Boost über die C++ - Standardbibliothek wählen. (Siehe die historischen Änderungen in Boost Spirit für ein Beispiel).

Daher immer Code mit Blick auf die C++ - Standardbibliothek, wann immer möglich zu migrieren.

Compiler-Optimierungen können auch einfacher mit C++ - Standardbibliotheksfunktionen durchgeführt werden, da ihr präzises Verhalten vom Standard definiert wird.

Verwandte Themen