Может ли ?:
привести к менее эффективному коду по сравнению с if / else
при возврате объекта?
Foo if_else()
{
if (bla)
return Foo();
else
return something_convertible_to_Foo;
}
If bla
ложно, возвращаемый Foo
напрямую сконструирован из something_convertible_to_Foo
.
Foo question_mark_colon()
{
return (bla) ? Foo() : something_convertible_to_Foo;
}
Здесь тип выражения после return
- Foo
, поэтому я предполагаю, что сначала создается временный Foo
, если bla
имеет значение false, чтобы получить результат выражения, а затем этот временный объект должен быть сконструирован для копирования, чтобы вернуть результат функции. Правильно ли этот анализ?