假设我正在编写一个针对支持 C++14 的编译器的库。
在 C++14 中,引入了几个标准库工具作为实验性工具,例如optional
和filesystem
.
是吗:
- 安全(针对下游开发人员)
- 合法的
即使仅支持 C++14,我也可以在我的库中使用这些功能?例如在表格中
#if __cplusplus >= 201703L
#include <optional>
namespace mylib {
using std::optional;
using std::nullopt;
}
#else
static_assert(__cplusplus >= 201402L, "C++2014 is required to compile this program");
#include <experimental/optional>
namespace mylib {
using std::experimental::optional;
using std::experimental::nullopt;
}
#endif
注意:当然,我的意思是下游开发人员实际上必须自己使用这些功能,而不仅仅是我只在内部使用它们而没有外部暴露的情况。