I think this is what you're looking for. You're assigning a T2 to a T. That means we need to take a Number, cast the value to T, then assign to this and return *this.
template
Number& operator=( const Number& number )
{
m_value = T( number.value() );
return *this;
}