Я понимаю, что лучше читать, чтоб знать, но просто от любопытства хотел бы знать сейчас: Почему?..
typedef int Rank; // правильно
using Temp = double; // правильно
typedef void (*P)(); // правильно
А вот это:
using (*f)() = double;
неправильное определение
Потому что суть using-алиаса в том, чтобы связать с именем некий существующий тип.
А в записи using (*f)() = double; на месте имени стоит (*f)(), что не является корректным идентификатором в C++, а потому именем типа быть не может.
Это действие примерно того же калибра, что создание переменной под названием... ну, скажем, -x. Представьте, насколько безумным должен быть (если вообще может быть) парсер, чтобы различать обращение к этой переменной и применение унарного минуса к x.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей