Мне пришло в голову, что в C++ можно использовать тип std::optional<std::reference_wrapper<T>>
. Объект этого типа по существу является ссылкой на объект типа T
или нулевое значение, то есть в значительной степени указатель. Мои вопросы:
-
Существует ли какая-либо концептуальная разница между
std::optional<std::reference_wrapper<T>>
иT*
? -
Есть ли какая-то практическая разница? Существуют ли ситуации, когда было бы целесообразно выбрать
std::optional<std::reference_wrapper<T>>
overT*
?