Wenn ich versuche, Boost mit MSVC2015 mit dem /std:c++latest
Flag aufzubauen, bekomme ich einen Fehler:
Was heißt:
%Vor%Nun scheint dies auf N4190 zurückzuführen zu sein, wie hier erwähnt: Ссылка
/ std: c ++ letzte steuert auch das Entfernen der folgenden alten Funktionen: N4190 "Entfernen von auto_ptr, random_shuffle () und Old Stuff", P0004R1 "Entfernen von veralteten Iostreams-Aliasen", LWG 2385 "Funktion :: zuweisen Zuweisungs-Argument macht keinen Sinn", und verschiedene Nicht-Standard-Features (der Namespace std :: tr1, nur TR1 Maschinen und die std :: identity struct).
Bei Verwendung von:
%Vor% Und mit boost::ilexicographical_compare
.
Es ist auch hier erwähnt:
%Vor%Maschinen, und es wird Verwirrung unter Nicht-Experten Benutzer zu reduzieren. (Für Beispiel, unnötige unary_function / binary_function Vererbung ist häufig , weil viele Benutzer STL-Algorithmen / -Container dachten benötigt dies, wenn in der Tat nur die veralteten Adapter taten.) Und Insbesondere auto_ptr ist unsicher, weil seine mutierende "Kopie" Konstruktor bewegt sich still von lvalues.
Also, wie bekomme ich Boost, um mit VC2015's / std: c ++ zu kompilieren? Momentan scheint Boost nicht C ++ 17 kompatibel zu sein?
Definieren Sie das Makro _HAS_AUTO_PTR_ETC
, bevor Sie beliebige Header einfügen. Wenn Sie das Buildsystem von Visual Studio für Ihren eigenen Code verwenden, wird dies am besten über die Einstellungen für Präprozessor-Definitionen . Um Boost selbst aufzubauen, füge define=_HAS_AUTO_PTR_ETC
zu deinem b2
/ bjam
Aufruf hinzu.
Andere zuvor standardmäßige Funktionen, die implizit durch /std:c++latest
deaktiviert werden, können durch Definieren der Makros _HAS_FUNCTION_ASSIGN
, _HAS_OLD_IOSTREAMS_MEMBERS
und _HAS_TR1_NAMESPACE
gesteuert werden. Diese Makros sind alle in den folgenden Blogartikeln beschrieben:
STL-Korrekturen in VS 2015 Update 3
Die STL von VS 2015 Update 2 ist C ++ 17-so weit Feature abgeschlossen
Tags und Links c++ visual-c++ boost visual-studio-2015 c++17