std :: nothrow для контекста нераспределения - PullRequest
1 голос
/ 17 июня 2019

В моем прочтении вопросов, связанных с std::nothrow, контекстом всегда является распределение памяти.Хорошо, похоже, что это его целевое назначение.

Однако в библиотеках, которые мы с моей командой предоставляем, иногда появляется интерфейс, который выглядит следующим образом:

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

, где первая функцияСигнатура будет использоваться, когда разрешен выброс исключений (т. е. файл не существует там, где вы думаете, что он существует), тогда как последний подпись функции используется всякий раз, когда вы находитесь в контексте, в котором бросание исключений нежелательно.

Я бы предпочел заменить наши пользовательские теги no_throw на std::nothrow, но я не уверен, что это лучший метод, учитывая, что std::nothrow предназначался для использования в контекстах распределения.

Ясно, что ничто не мешает мне сделать это, но я не хочу принимать неясные шаблоны кодирования.Руководство

...