// PR c++/71747 // { dg-do compile { target c++11 } } template < bool > struct A { typedef int type; constexpr bool operator() () const { return true; } }; template < bool, typename = int > struct F; template < bool X > // should be: struct F < X, typename A < A < X > {} () >::type > struct F < X, typename A < F < X > {} () >::type > { }; F < true > f; // { dg-error "" }