Kompilierung von Boost mit MSVC2015 mit / std: c ++ (oder C ++ 17 / N4190)

8

Wenn ich versuche, Boost mit MSVC2015 mit dem /std:c++latest Flag aufzubauen, bekomme ich einen Fehler:

%Vor%

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?

    
paulm 07.09.2016, 07:26
quelle

1 Antwort

9

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

    
ildjarn 07.09.2016 21:47
quelle