0

次のコードでは、返すものがなければ何を返す必要がありますか? 現在、私は T() のようなことをしていますが、それが正しくて適切かどうかはわかりません。

template<typename T1, typename T2>
tuple<T1, T2, bool> CBR<T1, T2>::getSomething(T1 t)
{
    // here I I don't have something of time T2 or T2 to return
    if( ... )
        return make_tuple(T1(), T2(), false); // @FIXME

    if( ... )
        return make_tuple(something.tp, something.ts, false);
    else
        return make_tuple(something.tp, something.ts, true);
}
4

1 に答える 1

2
boost::optional<tuple<T1, T2, bool> >

「良い」リターン パスは変更されません。「FIXME」は次のようになります。

return boost::none;

これにより、デフォルトの構築をサポートしていない型でクラスを使用できるようになります。

于 2012-01-27T13:28:50.243 に答える