我想创建使用标准 C++ 中的“可选”的标头。但是,我的标头将引用自 Visual Studio 2015 以及 Visual Studio 2017 项目。
我想要一些东西,例如对于 Visual Studio 2017(具有 C++ 17 语言功能集),使用 std::optional 并且对于 Visual Studio 2015,使用 boost::optional。
我在想这样的事情:
#include <yvals.h>
#if _HAS_CXX17
#include <optional>
template <typename T> using Optional = std::optional<T>;
#else
#include "boost/optional/optional.hpp"
template <typename T> using Optional = boost::optional<T>;
#endif
以这种方式使用“_HAS_CXX17”宏可以吗?有没有更好的方法来做到这一点?