mirror of
https://github.com/reactos/CMake.git
synced 2025-02-26 23:15:28 +00:00
bootstrap: Extend C++17 check for our cast functions
In commit fc3b4caa2e (Memory management: cast functions for managed pointers, 2019-11-18) we added a check to `Source/Checks/cm_cxx17_check.cpp` to avoid using C++17 mode on a compiler that does not support all our C++17 usage. Add the check to our bootstrap script too.
This commit is contained in:
parent
2d53894c31
commit
033a4b12a5
12
bootstrap
12
bootstrap
@ -1168,10 +1168,20 @@ int check_cxx14()
|
||||
}
|
||||
#endif
|
||||
|
||||
#if __cplusplus >= 201703L
|
||||
#if (__cplusplus >= 201703L || defined(__INTEL_COMPILER) && defined(__cpp_if_constexpr))
|
||||
#include <optional>
|
||||
template <typename T,
|
||||
typename std::invoke_result<decltype(&T::get), T>::type = nullptr>
|
||||
typename T::pointer get_ptr(T& item)
|
||||
{
|
||||
return item.get();
|
||||
}
|
||||
|
||||
int check_cxx17()
|
||||
{
|
||||
// Intel compiler do not handle correctly 'decltype' inside 'invoke_result'
|
||||
std::unique_ptr<int> u(new int(0));
|
||||
get_ptr(u);
|
||||
std::optional<int> oi = 0;
|
||||
return oi.value();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user