gpt4 book ai didi

c++ - 如果 `std::optional` 存在则条件编译函数

转载 作者:行者123 更新时间:2023-12-02 18:10:03 26 4
gpt4 key购买 nike

我有一个混合的 C++14/C++17 代码库,并且仅当我有 std::Optional 时,我才想启用函数 isEmpty手。所以,我尝试了 SFINAE:

template <typename T, typename int_<decltype(std::nullopt)>::type = 0>
inline bool isEmpty(const std::optional<T>& v) {
return !v;
}

但是,这不起作用。

如果存在 std::Optional,如何有条件地编译 isEmpty

最佳答案

如果您的编译器足够新(例如 GCC >= 9.1 或 Clang >= 9.0.0),您可以包含 header <version> 并有条件地编译您的函数模板 if 宏 __cpp_lib_optional 定义为:

#include <version> // provides, among others, __cpp_lib_optional

#ifdef __cpp_lib_optional
template <typename T>
inline bool isEmpty(const std::optional<T>& v) {
return !v;
}
#endif

这边,isEmpty仅当您处于 -std=c++17 时才会编译模式(或更高)。

关于c++ - 如果 `std::optional` 存在则条件编译函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72533601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com