Здравствуйте, rg45, Вы писали:
r> FS>Как такое возможно(особенно запись double(double)) и как такое соотносится с компиляторами и стандартом?
r> Нормальная запись, которая обозначает тип функции с одним параметром типа double и типом возвраемого значения double. Запись double(double) — это "голый" тип, без идентификатора. Добавлять идентификатор, если он понадобится, в этом случае нужно не в конец записи, а перед скобкой: double foo(double);
Впервые слышу про термин "голый тип", но понятно — что это сигнатура метода и она как-то трактуется компилятором при шаблонной подстановке как указатель на функцию. К сожалению я не знаю с++ template-preprocessors, а было бы интересно посмотреть какой в итоге код получается при подстановке типа double(double) в метод. Все-таки по-видимому подобные шаблонные параметры реализованы на уровне компилятора, а не на уровне С++.
Осталось только понять, как согласуется со всем сказанным стандарт.