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