テンプレート引数がdouble型かどうかをチェックするのに
下のような関数をつくったのですが
dataが常にintに評価されてしまい、falseしか返ってきません。
どうしてでしょうか?

template<typename T>
bool IsDouble()
{
double a=3.3;
T data=(T)a;
return (double)data==a;
};


int main()
{
bool a=::IsDouble<short>(); // false
bool b=::IsDouble<double>(); // これもなぜかfalse
}