Приведение 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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