Hi,

I'm adding the testcase and closing the PR. Tested x86_64-linux.

Thanks,
Paolo.

/////////////////////////
2012-10-04  Paolo Carlini  <paolo.carl...@oracle.com>

        PR c++/54323
        * g++.dg/cpp0x/pr54323.C: New.
Index: g++.dg/cpp0x/pr54323.C
===================================================================
--- g++.dg/cpp0x/pr54323.C      (revision 0)
+++ g++.dg/cpp0x/pr54323.C      (working copy)
@@ -0,0 +1,37 @@
+// PR c++/54323
+// { dg-do compile { target c++11 } }
+
+template<bool, typename T = void>
+struct enable_if { };
+
+template<typename T>
+struct enable_if<true, T>
+{ typedef T type; };
+
+template<template<typename> class CRTP, typename T>
+class Base
+{
+public:
+  template<template<typename> class CRTP0, typename T0, class>
+  friend int func(const Base<CRTP0, T0>& rhs);
+
+protected:
+  int n;
+};
+
+template<template<typename> class CRTP0, typename T0,
+        class = typename enable_if<true>::type>
+int func(const Base<CRTP0, T0>& rhs)
+{
+  return rhs.n;
+}
+
+template<typename T>
+class Derived : public Base<Derived, T> {};
+
+int main()
+{
+  Derived<int> x;
+  func(x);
+  return 0;
+}

Reply via email to