std :: необязательный :: value_or_default и std :: необязательный :: is_engaged

Я использовал экспериментальный std::optional какое-то время, и мне было интересно, если такой метод, как std::optional<T>::value_or_default когда-либо рассматривался. Это даст вам значение, если включен или по умолчанию T если не. Да легко написать std::optional::value_or( T { } ) но иногда, если T имеет кучу символов, я не думаю, что это так же ясно, как писать value_or_default,

Кроме того, такие документы, как n3672, на самом деле не дают веских причин, почему такой метод, как std:optional::is_engaged не был включен. Я понимаю почему nullopt полезно в некоторых случаях и был включен, но я думаю, std::optional::is_engaged понятнее в простых выражениях if.

1

Решение

Вот (минимально протестированная) реализация для вас:

template <typename T>
T value_or_default (const std::experimental::optional<T> &s)
{ return s.value_or(T{}); }

Вставьте это в свою базу кода, и все готово.

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector