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