template<typename T, typename U>
class Conversion
{
typedef char Small;
class Big{char dummy[2];};
static Small Test(U) { }
static Big Test(...) { }
static T MakeT() { }
public:
enum { exists = sizeof(Test(MakeT())) == sizeof(Small)};
};
如果T可以轉換為U 于是就調用Test(U)這個函數 返回一個char;
如果不能 就調用使用(...)缺省參數的函數 返回一個數組
然后對返回值進行判斷....