仔细阅读与std::nothrow
相关的问题时,上下文始终是内存分配。很好,这似乎就是它的预期目的。
但是,在我和我的团队提供的库中,有时我们的界面看起来像:
string name = full_path(dir, filename);
optional<string> name = full_path(dir, filename, no_throw);
在允许抛出异常的情况下将使用第一个函数签名(即,文件在您认为允许的位置不存在),而当您在抛出异常的上下文中使用后一个函数签名不需要。
我希望将我们的自定义no_throw
标记替换为std::nothrow
,但是由于std::nothrow
旨在用于以下情况,因此我不确定这是否是最佳实践分配上下文。
很明显,没有什么可以阻止我这样做,但是我不愿意采用晦涩的编码模式。指导?