1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
template <class T, int (T::*)> struct foo; template <class T> int f(foo<T,&T::ob_type>*); template <class T> char* f(...); struct X { int ob_type; }; struct Y { char* ob_type; }; int x = f<X>(0); char* y = f<Y>(0); char* z = f<int>(0); int main() { return 0; }