Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>А добавить const к существующей переменной, насколько я знаю, не позволяет ни один язык.
Добавить нет, но и вычислять одним выражением уже нет необходимости. Тем более, что не всё можно запихнуть в тернарку (например, циклы).
Immediately invoked lambda function
TypeWithLongName const VarWithLongName = [&]{
if (Var1 !=0 && Func1 (Arg1, Arg2)) {
return Func1WithLongName (Arg1WithLongName + Arg2WithLongName, Arg3WithLongName - Arg4WithLongName, Arg5WithLongName * Arg6WithLongName);
} else {
return Func2WithLongName (Arg1WithLongName + Arg2WithLongName, Arg4WithLongName - Arg3WithLongName, Arg6WithLongName / Arg5WithLongName);
}
}();
Мне лично не нравится в таком подходе наличие в коде return, за который цепляется глаз, и который может вызвать ложное ощущение возврата из охватывающей функции.
Но проблему сложной инициализации оно решает.
И точку останова, в отличие от тернарки, можно поставить на конкретную ветку.