Patchwork [C++,testcase] PR 54323

login
register
mail settings
Submitter Paolo Carlini
Date Oct. 4, 2012, 3:20 p.m.
Message ID <506DA953.8080203@oracle.com>
Download mbox | patch
Permalink /patch/189189/
State New
Headers show

Comments

Paolo Carlini - Oct. 4, 2012, 3:20 p.m.
Hi,

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

Thanks,
Paolo.

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

	PR c++/54323
	* g++.dg/cpp0x/pr54323.C: New.

Patch

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;
+}