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