- 156 名前:デフォルトの名無しさん mailto:sage [2007/07/30(月) 11:44:19 ]
- 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) }; }; int main() { using namespace std; cout << Conversion<double, int>::exists << endl << Conversion<char, char*>::exists << endl << Conversion<size_t, vector<int> >::exists << endl << Conversion<A*, B*>::exists << endl << Conversion<B*, A*>::exists << endl; } 詳しくは Modern C++ Design 参照。
|

|