// PR c++/54323 // { dg-do compile { target c++11 } } template struct enable_if { }; template struct enable_if { typedef T type; }; template class CRTP, typename T> class Base { public: template class CRTP0, typename T0, class> friend int func(const Base& rhs); protected: int n; }; template class CRTP0, typename T0, class = typename enable_if::type> int func(const Base& rhs) { return rhs.n; } template class Derived : public Base {}; int main() { Derived x; func(x); return 0; }