- 1
int f(int = 7, int * = nullptr, int (*(*)(double))[3] = nullptr){
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+24
int f(int = 7, int * = nullptr, int (*(*)(double))[3] = nullptr){
http://ideone.com/BcZ7Ja
А в чем смысл? Разве что если хочется подгадить юзеру, чтобы ему IDE в подсказках показывало бесмыссленное и беспощадное void test(int, int), с которым без доки не разобраться?
Имхо, даже в тайпдефе опускание имен аргументов и то сомнительно.
2. Example: the declaration
void point(int = 3, int = 4);
declares a function that can be called with zero, one, or two arguments of type int.
а именованные параметры, как обычно, уже были в симпсонах есть только в бусте, удобства на улице
а имена параметров необязательны, даже в определении
В крестах есть дефолтные аргументы (передавать в произвольном порядке нельзя, можно только тупо опускать несколько последних): А в сишке дефолтных аргументов нет ни в каком виде, как и перегрузки функций.
ISO/IEC 14882-98
Вот этот всё время забываю ISO/IEC TR 19768:2007, но как-то пофиг.
14 и 17 - это один стандарт между прочим. Просто предварительный выпуск чтобы компиляторостроители не ждали.
В таком случае: std::function
В любом случае тайпдеф здесь бы смотрелся гораздо лучше и понятнее.
Почему на гейдеве так не любят создавать алиасы типам? Им нравится разбирать месиво из скобочек? Они экономят несколько байт в памяти и несколько наносекунд, когда компилируют? Их возбуждает удар грабель по лбу?
P.S. А зачем вообще люди опускают имена аргументов?
void test(int width, int height) всяко понятней, чем безликий void test(int, int).
"Хули он там тестит высоту, ширину какой-то херни"
"Почему ничего не возвращает? Глобальная магия-шмагия?"
который спускает скрижали оттуда