Это очень принципиальный вопрос. Есть ли какая-либо польза от использования boost:: optional в следующем сценарии:
int somefunction(boost::optional<const Param&> value = getDefaultParam()){
return value->dosomething();
}
or
int somefunction(boost::optional<const Param&> value){
if (!value)
value = getDefaultParam();
return value->dosomething();
}
вместо того, чтобы просто сделать это:
int somefunction(const Param& value = getDefaultParam()){
return value.dosomething();
}
Это для конкретного случая, когда я знаю, что инициализирую объект Param значением по умолчанию. Может ли быть какая-либо польза от использования boost:: optional в Param для API или клиента API?
getDefaultParam
? Если он возвращаетParam
, #2 будет не очень правильным (я не уверен, чтоboost
позволит ему скомпилироваться, но это не сработает). Как правило,boost::optional<const Param&>
можно заменить наParam const*
, так какboost::optional<const&>
является невладеющей переустанавливаемой ссылкой, допускающей значение NULL... как иParam const*
. - person Yakk - Adam Nevraumont   schedule 17.03.2015