I'm getting many errors in the STL (set, vector, deque, etc.) where the macro _NOEXCEPT_PO
is used. The same code compiles fine in Visual Studio 2010, whose STL doesn't include _NOEXCEPT_PO
macros. I've replicated this error across three PCs. Are there additional preproc definitions I need to be aware of?
Error given is:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\vector:852: warning: C4346: 'std::vector<_Ty,_Alloc>::std::vector<_Ty,_Alloc>::_Alty::propagate_on_container_move_assignment::value': dependent name is not a type
_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
is defined as:
#define _NOEXCEPT noexcept
#define _NOEXCEPT_OP(x) noexcept(x)
Edit:
While working to reduce this to a small example, I found that it was the inclusion of Juce headers that made the difference. Unfortunately the error message wasn't very helpful, so I didn't realize the inclusion of Juce was relevant.
The fix for this particular issue is to define:
JUCE_COMPILER_SUPPORTS_NOEXCEPT=1