1 // PR c++/14337 2 3 template <bool> struct Constraint; 4 template <> struct Constraint<true> { typedef int Result; }; 5 6 template <typename T> 7 struct IsInt { static const bool value = false; }; 8 9 template <> 10 struct IsInt<int> { static const bool value = true; }; 11 12 template <typename T> 13 typename Constraint<IsInt<T>::value>::Result foo(T); 14 15 template <typename T> 16 typename Constraint<!IsInt<T>::value>::Result foo(T); 17 18 template <typename> 19 void bar() { 20 foo(1); 21 } 22