3 template <bool> struct Constraint;
4 template <> struct Constraint<true> { typedef int Result; };
7 struct IsInt { static const bool value = false; };
10 struct IsInt<int> { static const bool value = true; };
13 typename Constraint<IsInt<T>::value>::Result foo(T);
16 typename Constraint<!IsInt<T>::value>::Result foo(T);