Вы можете просто создать два разных конструктора:
T(const T&)
T(const T&,double)
Тем не менее, то, что у вас есть, разрешено использовать в качестве конструктора копирования.
В добавлении, я обнаружил, что обычно этоне очень хорошая идея использовать параметры по умолчанию в C ++, и вместо этого гораздо лучше использовать перегрузки, когда те, у которых меньше параметров, вызывают те, у которых больше параметров, используя значения по умолчанию (конечно, это невозможно с конструкторами в ISO C ++2003, но делегирование конструкторов разрешено в ISO C ++ 201x).Причина этого в том, что значения по умолчанию дают вашим функциям действительные сигнатуры, отличные от их кажущегося поведения, что делает его несколько трудным / болезненным при использовании указателей на функции.Предоставляя перегрузки, можно использовать указатели функций каждого возможного типа вызова, не требуя какого-либо «связующего» механизма для его работы.