Это очень фундаментальный вопрос. Есть ли какое-либо преимущество в использовании подталкивания :: опциональное по следующему сценарию:Воспользуйтесь преимуществами boost :: optional в следующих случаях:
int somefunction(boost::optional<const Param&> value = getDefaultParam()){
return value->dosomething();
}
или
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?
Нет. Просто сделайте последнее. – metal
Что возвращает 'getDefaultParam'? Если он вернет 'Param', # 2 не будет очень правильным (я не уверен, что' boost' разрешит его компиляцию, но это не сработает). Как правило, 'boost :: optional' может быть заменен на 'Param const *', так как 'boost :: optional ' является неприемлемой ссылочной ссылочной ссылкой ... а также 'Param const *' , –
Yakk