diff --git a/bootstrap b/bootstrap index 6e895897b3..1b0cb2672c 100755 --- a/bootstrap +++ b/bootstrap @@ -1168,10 +1168,20 @@ int check_cxx14() } #endif -#if __cplusplus >= 201703L +#if (__cplusplus >= 201703L || defined(__INTEL_COMPILER) && defined(__cpp_if_constexpr)) #include +template ::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 u(new int(0)); + get_ptr(u); std::optional oi = 0; return oi.value(); }