Приведение std::optional низшего типаC++

Программы на C++. Форум разработчиков
Anonymous
Приведение std::optional низшего типа

Сообщение Anonymous »

Если у меня есть std::optional, то как я могу прозрачно привести его к std::optional, учитывая, что T и U являются совместимыми типами и сохраняют std::nullopt?
То есть, если исходный std::optional был std::nullopt< /code>, затем полученный std::optional должен быть таким же. В противном случае будет выполнено запрошенное приведение (статическое/динамическое/переосмысление...).

Код: Выделить всё

struct B { };
struct C: public B { };

std::optional c;
std::optional b;

b = c; // works - a C can be implicitely up-casted to a B
//c = b; // doesn't work, explicit down-cast (involving knowledge) required
Я знаю, что существует std::optional::transform, и я, конечно, могу обойти его, сформулировав if/else самостоятельно.
p>
Просто спрашиваю, видимо, я упускаю из виду элегантность.

Подробнее здесь: https://stackoverflow.com/questions/793 ... erior-type

Вернуться в «C++»