Ich bekomme viele Fehler in der STL (Set, Vektor, Deque, etc.), wo das Makro _NOEXCEPT_PO
verwendet wird. Derselbe Code wird in Visual Studio 2010 korrekt kompiliert, dessen STL _NOEXCEPT_PO
Makros nicht enthält. Ich habe diesen Fehler auf drei PCs repliziert. Gibt es zusätzliche Preproc-Definitionen, auf die ich achten muss?Warum kann Visual Studio 2015 die STL-Bibliothek nicht mit "noexcept" kompilieren, wenn Juce vorhanden ist?
Fehler gegeben ist:
C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ VC \ include \ vector: 852: Warnung: C4346: ‚std :: vector < _Ty, _Alloc> :: std :: vector < _Ty, _Alloc> :: _ Alty :: propagate_on_container_move_assignment :: value ': abhängig Name ist kein Typ
_Myt& operator=(_Myt&& _Right)
_NOEXCEPT_OP(_Alty::propagate_on_container_move_assignment::value
|| _Alty::is_always_equal::value)
{ // assign by moving _Right
if (this != &_Right)
{ // different, assign it
_Tidy();
if (_Alty::propagate_on_container_move_assignment::value
&& this->_Getal() != _Right._Getal())
this->_Move_alloc(_Right._Getal());
_Assign_rv(_STD forward<_Myt>(_Right));
}
return (*this);
}
_NOEXCEPT_OP
ist definiert als:
#define _NOEXCEPT noexcept
#define _NOEXCEPT_OP(x) noexcept(x)
bearbeitet:
Während der Arbeit dies zu einem kleinen Beispiel zu reduzieren, fand ich, dass es die Aufnahme von Juce Header war, die den Unterschied gemacht. Leider war die Fehlermeldung nicht sehr hilfreich, daher war mir nicht bewusst, dass die Aufnahme von Juce relevant war.
Die Fehlerbehebung für dieses besondere Problem zu definieren: JUCE_COMPILER_SUPPORTS_NOEXCEPT=1
Dies ist nur eine Warnung, und es sieht ganz überflüssig - es gibt keinen Grund, Für einen abhängigen Namen muss er unbedingt ein Typ sein. Ich schlage vor, es zu deaktivieren. – Quentin
@Quentin nein, es ist überhaupt nicht überflüssig. Es ist juat der Microsoft-Weg, Ihnen zu sagen, dass [Sie brauchen möglicherweise das Schlüsselwort typeName] (https://stackoverflow.com/questions/1600936/officially-what-istypename-for). –
Bitte geben Sie eine [mcve] an. – rustyx