Этот вопрос был вдохновлен этим ответом.
Я всегда придерживался той философии, что вызывающий не несет ответственности, когда вызывающий делает что-то глупое, например, передачу недопустимых параметров. Я пришел к такому выводу по нескольким причинам, но, возможно, самый важный из них - в этой статье:
Все, что не определено, undefined.
Если функция не говорит в нем, что она действительна для передачи nullptr
, тогда вы чертовски лучше не пропускать nullptr
к этой функции. Я не считаю, что ответственность за это вызывает ответственность.
Однако я знаю, что будут те, кто не согласен со мной. Мне любопытно, нужно ли мне проверять эти вещи и почему.