std :: nothrow用于非分配上下文

时间:2019-06-17 17:06:29

标签: c++ c++17 c++-standard-library

仔细阅读与std::nothrow相关的问题时,上下文始终是内存分配。很好,这似乎就是它的预期目的。

但是,在我和我的团队提供的库中,有时我们的界面看起来像:

string name = full_path(dir, filename);
optional<string> name = full_path(dir, filename, no_throw);

在允许抛出异常的情况下将使用第一个函数签名(即,文件在您认为允许的位置不存在),而当您在抛出异常的上下文中使用后一个函数签名不需要。

我希望将我们的自定义no_throw标记替换为std::nothrow,但是由于std::nothrow旨在用于以下情况,因此我不确定这是否是最佳实践分配上下文。

很明显,没有什么可以阻止我这样做,但是我不愿意采用晦涩的编码模式。指导?

0 个答案:

没有答案