Здравствуйте, B0FEE664, Вы писали:
BFE>Моё мнение такое: экономит надо не время записи, а время чтения.
BFE>Запись:
E>>f(.a = 1, .b=42);
BFE>ничем не лучше, а даже хуже, чем:
BFE>BFE>const int a = 1;
BFE>const int b = 42;
BFE>f(a, b);
это все мило, но кто так пишет? Это просто убивает все однострочники.
Опять же, ты можешь ошибиться и написать f(b, a). А если я напишу f(.b=42, .a=1), то это будет корректно обработано (ну по крайней мере, если применить правила из питона).
Далее, функция может иметь аргументы по умолчанию — void f(a = 1, b = 2, c = 3). И ее можно будет вызывать f(.c=4). Твой вариант с константами тут не поможет...
BFE>Но, что такое a? Что такое b? —
ну вестимо в реальной жизни аргументы не называют a и b ...
BFE>Вызов функции с константами определёнными по месту вызова — это экзотика для хорошего стиля.
BFE>Если в программе встречается более чем один вызов функции с одинаковыми не именованными константами, то это уже плохо. Следует либо поименовать константы, либо завернуть вызов функции в другую функцию, например:
BFE>BFE>inline void LastAnswerOnUltimateQuestion()
BFE>{
BFE> const int nAnswerNumber = 1;
BFE> const int nAnswerValue = 1;
BFE> f(nAnswerNumber, nAnswerValue);
BFE>}
BFE>
Это к вопросу о нужности лямбд. Зачем нужна лямбда из одной строки, когда можно на 5 строках в другом месте файла изобразить повторно используемый функтор? Вроде как и низачем. Однако ж функторы особо не пишут, и вместо find_if фигачат цикл...