Я просмотрел беспорядок, который представляет собой lexical_cast.hpp, и это продолжает ускользать от меня.
Как lexical_cast, чье «базовое определение» принимает как источник, так и место назначения шаблона, может принимать такие грамматики, как lexical_cast<int>("7")
? Я не понимаю, как ему может понадобиться только шаблонный тип возвращаемого значения, и вам не нужно указывать тип параметра, не делая чего-то незаконного, например, частичной специализации шаблона.
Примечание. Я понимаю, как вы можете сделать это с одним типом шаблона и перегрузками для разных параметров, но я не понимаю, как lexical_cast основан на функции шаблона, требующей как исходного, так и целевого типов шаблонов.