microsoft / WinObjC

Objective-C for Windows
MIT License
6.24k stars 808 forks source link

Bring WinObjC into C++17 compliance #2868

Open DHowett-MSFT opened 6 years ago

DHowett-MSFT commented 6 years ago

Moving to Clang 6 (#2838) allows us to build as standards-compliant C++17.

There is a number of small incompatibilities:

Frameworks\include/CGImageInternal.h(46,36): error : no template named 'binary_function' in
namespace 'std'
Frameworks\Foundation\FormatPrintf.mm(228,5): error : ISO C++17 does not allow 'register'
storage class specifier [-Wregister]
Frameworks\CoreFoundation\String.subproj\CFStringScanner.c(59,5): error : ISO C++17 does not
allow 'register' storage class specifier [-Wregister]

In addition, cassowary-0.60 (headers) ships an auto_ptr that seems to be incompatible.

DHowett-MSFT commented 6 years ago
deps\3rdparty\eigen\src\core\functors.h(981): error C4996: 'std::unary_negate<_Fn>': warning
STL4008: std::not1(), std::not2(), std::unary_negate, and std::binary_negate
are deprecated in C++17. They are superseded by std::not_fn(). You can define
_SILENCE_CXX17_NEGATORS_DEPRECATION_WARNING or
_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS to acknowledge that you have
received this warning. (compiling source file ..\..\..\Frameworks\Accelerate\blasCFloat.cpp)