如何确定编译器实现的C++标准版本?据我所知,以下是我所知道的标准:
我有一个混合的 C++14/C++17 代码库,并且我isEmpty只想在手头有一个函数时启用该函数std::optional。所以,我尝试了 SFINAE:
template <typename T, typename int_<decltype(std::nullopt)>::type = 0>
inline bool isEmpty(const std::optional<T>& v) {
return !v;
}
Run Code Online (Sandbox Code Playgroud)
然而,这是行不通的。
isEmpty如果std::optional存在的话如何进行条件编译?