我怀疑 boost::optional's已被弃用,因为如果将右值作为参数get_value_or
传递它是不安全的。default
但是,能够引用可选值或默认替代值有时会很有用。
以下安全吗?
template<typename T>
T const& get_reference_or(boost::optional<T> const& opt, T const& alt)
{
if (opt) return opt.get();
else return alt;
}
template<typename T>
T const& get_reference_or(boost::optional<T> const&, T&&) = delete;