sfinae47.C: New.
authorPaolo Carlini <paolo@gcc.gnu.org>
Sun, 23 Jun 2013 23:36:34 +0000 (23:36 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Sun, 23 Jun 2013 23:36:34 +0000 (23:36 +0000)
2013-06-23  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/cpp0x/sfinae47.C: New.

From-SVN: r200353

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/sfinae47.C [new file with mode: 0644]

index 06e6847c26658ad7d101e994478c740b4af61e5b..084a20f87907014c9bc91f31189a0c1e5d522e61 100644 (file)
@@ -1,3 +1,7 @@
+2013-06-23  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * g++.dg/cpp0x/sfinae47.C: New.
+
 2013-06-23  Oleg Endo <olegendo@gcc.gnu.org>
 
        PR target/52483
 
 2013-06-23  Sriraman Tallam  <tmsriram@google.com>
 
-       * testsuite/gcc.target/i386/intrinsics_1.c: New test.
-       * testsuite/gcc.target/i386/intrinsics_2.c: Ditto.
-       * testsuite/gcc.target/i386/intrinsics_3.c: Ditto.
-       * testsuite/gcc.target/i386/intrinsics_4.c: Ditto.
-       * testsuite/gcc.target/i386/intrinsics_5.c: Ditto.
-       * testsuite/gcc.target/i386/intrinsics_6.c: Ditto.
-       * testsuite/gcc.target/i386/avx-1.c: Provide macros for builtins
+       * gcc.target/i386/intrinsics_1.c: New test.
+       * gcc.target/i386/intrinsics_2.c: Ditto.
+       * gcc.target/i386/intrinsics_3.c: Ditto.
+       * gcc.target/i386/intrinsics_4.c: Ditto.
+       * gcc.target/i386/intrinsics_5.c: Ditto.
+       * gcc.target/i386/intrinsics_6.c: Ditto.
+       * gcc.target/i386/avx-1.c: Provide macros for builtins
        needing immediate arguments in f16cintrin.h and rtmintrin.h.
 
 2013-06-21  Tobias Burnus  <burnus@net-b.de>
diff --git a/gcc/testsuite/g++.dg/cpp0x/sfinae47.C b/gcc/testsuite/g++.dg/cpp0x/sfinae47.C
new file mode 100644 (file)
index 0000000..1058a28
--- /dev/null
@@ -0,0 +1,25 @@
+// Source: Comment 16 of PR51213
+// { dg-do compile { target c++11 } }
+
+template <class T>
+T && declval();
+
+template <class T>
+constexpr auto hasSize(int) -> decltype(declval<T&>().size(), bool())
+{ return true; }
+
+template <class T>
+constexpr bool hasSize(...)
+{ return false; }
+
+struct A
+{
+  int size();
+};
+
+struct B : private A
+{
+};
+
+static_assert(hasSize<A>(0),  "A");
+static_assert(!hasSize<B>(0), "B");