【发布时间】:2012-02-20 11:22:31
【问题描述】:
对于下面的代码,如果我没有东西要返回,我应该返回什么?目前,我做了类似 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);
}
【问题讨论】:
-
那是design question。如果不能返回某些东西,supposed 应该返回什么函数?
-
你知道
boost::optional吗? -
顺便说一句,最后 4 行应该只是
return make_tuple(something.tp, something.ts, !(...)); -
@FredOverflow 使用 boost::optional 即使不需要 T1 和 T2,我也想返回 false,以便调用它的用户知道他不应该计算 T1 和 T2 例如(因为实际上没有 T1 和 T2)。有可能吗?
-
那么当boolean为false时,就没有真正的T1和T2部分了?听起来你想要一个
boost::optional<pair<T1, T2> >。
标签: c++ methods return optional typename