aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2015-08-04 11:05:02 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2015-08-04 11:05:02 +0000
commit01003b83810cbaff81d9a7c00947afa725cbbe9a (patch)
treeeb47864f1a3193dda6b5d0fd90f32ccecb4c7625
parent91d0e8dec9e589701e681ec4357e054fd658c2bb (diff)
downloadgcc-01003b83810cbaff81d9a7c00947afa725cbbe9a.zip
gcc-01003b83810cbaff81d9a7c00947afa725cbbe9a.tar.gz
gcc-01003b83810cbaff81d9a7c00947afa725cbbe9a.tar.bz2
re PR c++/66427 (The compiler rejects too complex variable templates)
2015-08-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/66427 * g++.dg/cpp1y/var-templ34.C: New. From-SVN: r226568
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/var-templ34.C20
2 files changed, 25 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 37b4168..fb22e07 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-08-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/66427
+ * g++.dg/cpp1y/var-templ34.C: New.
+
2015-08-04 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/aarch64/pragma_cpp_predefs_1.c: New test.
diff --git a/gcc/testsuite/g++.dg/cpp1y/var-templ34.C b/gcc/testsuite/g++.dg/cpp1y/var-templ34.C
new file mode 100644
index 0000000..0c39dd9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/var-templ34.C
@@ -0,0 +1,20 @@
+// PR c++/66427
+// { dg-do compile { target c++14 } }
+
+template<typename T>
+struct complex {};
+
+struct plus {};
+struct multiplies {};
+
+template<typename T, typename Op>
+constexpr T identity_element;
+
+template<>
+constexpr int identity_element<int, plus> = 0;
+
+template<typename T>
+constexpr complex<T> identity_element<complex<T>, plus> = {
+ identity_element<T, plus>,
+ identity_element<T, plus>
+};