template<class T>
int print(T v)
{
 printf("%d",v);// intの場合
 printf("%lf",v);// doubleの場合
}

printfを使うことは必須なんですが、どうすれば実現できます?