Здравствуйте, enji, Вы писали:
E>Если с таким разбирается компилятор С, то что мешает компилятору С++ разобраться с
E>E>void f(int a, int b);
E>f(.a = 1, .b=42);
E>
E>Ваше мнение?
Моё мнение такое: экономит надо не время записи, а время чтения.
Запись:
E>f(.a = 1, .b=42);
ничем не лучше, а даже хуже, чем:
const int a = 1;
const int b = 42;
f(a, b);
Но, что такое a? Что такое b? —
Вызов функции с константами определёнными по месту вызова — это экзотика для хорошего стиля.
Если в программе встречается более чем один вызов функции с одинаковыми не именованными константами, то это уже плохо. Следует либо поименовать константы, либо завернуть вызов функции в другую функцию, например:
inline void LastAnswerOnUltimateQuestion()
{
const int nAnswerNumber = 1;
const int nAnswerValue = 1;
f(nAnswerNumber, nAnswerValue);
}
Заметили ошибку? Легко исправить?
А вы бы её заметили, во всех разбросанных по коду вызовах:
// file: start.cpp
f(.nAnswerNumber = 1, .nAnswerValue = 42);
// file: background.cpp
f(.nAnswerNumber = 1, .nAnswerValue = 42);
// file: crash.cpp
f(.nAnswerNumber = 1, .nAnswerValue = 1);
?
Легко исправить?