А почему нет вызова функций с именованными аргументами?
От: enji  
Дата: 11.09.14 09:20
Оценка: +5 -1
Тут недавно холиварчик был С vs С++, там как одно из преимуществ С была запись
struct T { int a, b; };
T t = {.a = 1, .b=42};


Если с таким разбирается компилятор С, то что мешает компилятору С++ разобраться с
void f(int a, int b);

f(.a = 1, .b=42);


Понятно, что в некоторых редких случаях в разных единицах трансляции названия аргументов f могут быть разными (или вообще отсутствовать). Но если аргументы разные и используется такой вызов, то это можно просто трактовать как нарушение ODR (очередное недиагностируемое ).

Понятно, что есть буст, но имхо, то, что там предлагается, выглядит уродливо, порождает нечитаемые сообщения об ошибках, засоряет пространство имен (или на ровном месте вводит новое), замедляет компиляцию, подозреваю также, у него есть проблемы с перегрузкой и неявными преобразованиями. Кроме того, оно требует правки хидеров или написания врапперов. Такие вещи все ж должны быть на уровне языка.

Ваше мнение?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.