Ich aktualisiere von VS2013 zu VS2015 und erhalte die folgende Warnung. Ich dachte VS2015 implementiert magische Statik, so dass das lokale statische Objekt thread-sicher sein sollte, also was ist los?VS2015 unterstützt magische Statik, warum also diese Warnung?
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(698): error C2220: warning treated as error - no 'object' file generated
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(704): note: see reference to function template instantiation '_Ty &std::_Immortalize<std::_Generic_error_category>(void)' being compiled
with
[
_Ty=std::_Generic_error_category
]
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\system_error(698): warning C4640: '_Static': construction of local static object is not thread-safe
Der Fehler ist in der System_error-Header aus dem VS-Installationsordner. Der Fehler ist in dieser Funktion:
template<class _Ty> inline
_Ty& _Immortalize()
{ // return a reference to an object that will live forever
static _Immortalizer<_Ty> _Static;
return (*reinterpret_cast<_Ty *>(&_Static._Storage));
}
Das ist alles, der Kontext gibt im Fehler ist, und ich kann nicht sehen, wo system_error wird tatsächlich enthalten.
Compiler-Flags sind:
/Yu"stdafx.h" /GS /analyze /W3 /wd"4481" /wd"4251" /Zc:wchar_t
/Zi /Gm- /O2 /sdl /Fd"x64\Release\\Release_vc140.pdb" /Zc:inline /fp:precise
/errorReport:prompt /WX /Zc:forScope /Gd /MT /Fa"x64\Release\" /EHsc /nologo /Fo"x64\Release\" /Fp"x64\Release\MyProj.pch"
aktualisieren
Sorry, es jetzt behoben zu sein scheint. Es sieht so aus, als wäre ich auf dem v140_xp-Toolset und der falschen TargetPlatformVersion. Dieser musste durch das Netz geschlüpft sein, als ich dachte, ich hätte sie alle ersetzt. Ich bin mir nicht ganz sicher, warum diese Fehler zu diesem Fehler führen würden. Wie auch immer, danke für die Hilfe bis jetzt.
Welche Compiler-Flags verwenden Sie? – cpplearner
ist es standardmäßig erforderlich, und es gibt nichts Magisches daran. Wenn MSVC im Jahr 2015 nicht in der Lage ist, C++ 11 in einem solchen grundlegenden Feature zu folgen, weiß ich nicht, was ich sagen soll. – SergeyA
@SergeyA - Was ist vom Standard gefordert? –