0

次のいずれかのテンプレート メソッドを宣言できますかnoexcept?

template <typename T>
std::optional<T> foo(const T& value) // noexcept?
{
    try {
        // code possibly returning a T or a std::nullopt
    } catch(...) {
        return std::nullopt;
    }
}

template <typename T>
boost::optional<T> bar(const T& value) // noexcept?
{
    try {
        // code possibly returning a T or a boost::none
    } catch(...) {
        return boost::none;
    }
}

つまり、初期化されていないstd/boost::optional( nullopt/none) はスローできますか?

4

2 に答える 2

1

http://en.cppreference.com/w/cpp/experimental/optional/optionalnoexceptに従って、optional のデフォルト コンストラクタが宣言されています。

于 2016-01-14T21:11:15.353 に答える