что я должен вернуть, если у меня нет чего-то для неизвестного типа - PullRequest
0 голосов
/ 27 января 2012

Для следующего кода, что я должен вернуть, если мне нечего вернуть? В настоящее время я делаю что-то вроде 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);
}

1 Ответ

2 голосов
/ 27 января 2012
boost::optional<tuple<T1, T2, bool> >

«Хорошие» пути возврата не изменятся;"FIXME" станет:

return boost::none;

Это может позволить вашему классу использоваться с типами, которые не поддерживают конструкцию по умолчанию.

...