Rod*_*igo 6 c++ nullptr c++11 c++17 stdoptional
我正在编写一个小型 C++11 库,我相信std::optional它会是一些可以返回nullptr. 然而,std::optional这是 C++17 的功能。由于 C++11 是一项要求,因此我正在寻找在std::optional保持兼容性的同时使用的方法。
我发现功能宏可以测试。我想我可以用它来检测是否std::optional可用......但是当它不可用时最好的方法是什么?
我应该提供自己的std::optional实现吗?
不可用nullptr时返回?std::optional(可能会弄乱我的代码。)
还是放弃这个想法,nullptr只继续返回?
C++11 中没有标准的使用方法std::optional。您可以依赖 C++17,或者不能使用std::optional.
我应该提供自己的 std::可选 实现吗?
您可以编写自己的可选实现,但不能调用它std::optional。或者,您可以使用预先存在的实现,例如 Boost 中的实现。
话虽如此,如果您无论如何都返回一个指针,那么使用可选可能没有多大意义,因为指针已经具有“空”值的表示:空指针。但是,如果您需要区分 null 和empty,那么可选可能会很有用。