Какая обёртка позволяет разыменовывать без неопределённого поведения?
Хочу сослаться (без владения) на объект опционально, но не с неопределённым поведением от разыменования 'ничего', а с исключением. Разыменование нулевого указателя - ub, разыменование пустого optional<> - тоже (optional> не поможет). Думал найду в std на раз-два, ну или практику какую нагуглю, но что-то тщетно. Неужели придётся делать велосипед??
Все инструменты для обертки есть (проверка на nullptr или has_value), поэтому написать её совсем не сложно. А вот выбор типа нотификации об ошибке и способе ее обработке лежит на ваших плечах
Нет, это надо не забывать проверять, и многословно будет
unique_ptr же существует по той же причине
Просто обёртка над указателем или optional с проверкой на nullptr или noopt соответственно, неужели до сих пор этого нет?
Это в коде одна проверка. Не многословно и не забыть никак, если обертку использовать.
Ее в стандартной библиотеке, кажется, нет. Ибо, если, например, использовать unique_ptr, (который нужен по причине управления временем жизни объекта, а не вот этой вот), то нулевые указатели вообще никогда не придется разыменовывать. Также есть много разных случаев, где ваша проблема решается по-другому.