Dieser Code:Wie verhindert man Performance-Warnung für unique_ptr in VS einchecken?
unique_ptr<int> a;
if (a) {
cout << "ASSIGNED" << endl;
}
und auch dieser Code:
unique_ptr<int> a;
if (static_cast<bool>(a)) {
cout << "ASSIGNED" << endl;
}
Ursache dieser Warnung:
warning C4800: 'void (__cdecl *)(std::_Bool_struct<_Ty> &)' : forcing value to bool 'true' or 'false' (performance warning)
with
[
_Ty=std::unique_ptr<int>
]
in Visual Studio 2012 auf Warnstufe 3. Nach den ersten Kommentaren fand ich aus, dass es nur passiert, wenn die Common Language Runtime-Unterstützung/clr eingeschaltet ist. Wie soll ich es vermeiden?
if (a.get() != nullptr)
sollte funktionieren, aber ich denke, das ist nicht wie unique_ptr entworfen wurde, war es?
Ich habe VS2013, aber es gibt mir keine solche Warnung! – billz
Erstellt ohne Warnung in Visual Studio 2010 mit Level-Warnung auf "/ W4" eingestellt ... – Johan
Ich kompiliere auf/W3 (zum Beitrag hinzugefügt) –