// PR c++/52830 // { dg-do compile { target c++11 } } // { dg-additional-options "-fchecking" } // A version of constexpr-52830.C that uses an intermediate template template // parameter. template struct eif { typedef void type; }; template<> struct eif {}; template struct same { static constexpr bool value = false; }; template struct same { static constexpr bool value = true; }; struct foo { template class SAME = same> void func(T && a, typename eif::value>::type * = 0); }; template class SAME> void foo:: func(T && a, typename eif::value>::type * ) { } void do_stuff() { foo f; f.func(12); }