dascandy / hippomocks

GNU Lesser General Public License v2.1
196 stars 67 forks source link

noexcep check is incorrect #46

Closed Gr8Escape closed 8 years ago

Gr8Escape commented 8 years ago

The ~MockRepository contains a check for noexcept support however that check is incorrect.

if __cplusplus >= 199711L && (!defined(_MSC_VER) || _MSC_VER > 1700)

noexcept(false)

endif

It should be:

if __cplusplus > 199711L || (defined(_MSC_VER) && _MSC_VER > 1700)

noexcept(false)

endif

The VC2015 compiler (and earlier versions) still define __cplusplus as 199711L So to check for correct VC version, the _MSC_VER has to exist and be larger than 1700 (VC2012)

dascandy commented 8 years ago

... Good lord. It's apparently very hard to get these things right in compilers - I wonder why they do ship MSVC with C++17 features, but still claiming it doesn't support C++11.

Will fix, thanks for the comment!

Gr8Escape commented 8 years ago

I think they are almost there with C++11 and instead of adding the difficult items from C++11 they add the easier or (more used) items from C++17

dascandy commented 8 years ago

Sadly I know that they still have an open bug on C++03/98 wrt lookup inside templates, which has hit me in practice. That one's also not fixed. I'm just surprised they still claim to do c++98 in VS2015, when it supports 95% of C++11 - it would make sense to choose the c++11 code paths in code that has it, I would say.

dascandy commented 8 years ago

Fixed; will push change soon. Thanks!