diff gcc/testsuite/g++.dg/cpp0x/initlist69.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 1830386684a0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/g++.dg/cpp0x/initlist69.C	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,29 @@
+// PR c++/50261
+// { dg-require-effective-target c++11 }
+
+template <typename T>
+struct ca {
+  T elem[1];
+
+  ca(const T (&s)[1]): elem{{s}} { }	   // { dg-error "braces" }
+  ca(const T (&s)[1],int): elem({{s}}) { } // { dg-error "paren|invalid" }
+  ca(const T (&s)[1],char): elem(s) { }	   // { dg-error "array" }
+  ca(const T (&s)[1],double): elem{s} { }  // { dg-error "invalid" }
+
+  ca(const T &v): elem{{v}} { }	      // { dg-error "braces" }
+  ca(const T &v,int): elem{{{v}}} { } // { dg-error "braces" }
+  ca(const T &v,char): elem{v} { }    // OK
+  ca(const T &v,double): elem({v}) { } // { dg-error "paren" }
+};
+
+int main() {
+  int a[1] = {0};
+  ca<int> d(a);
+  ca<int> d1(a,1);
+  ca<int> d2(a,'2');
+  ca<int> d3(a,3.0);
+  ca<int> e(a[0]);
+  ca<int> e1(a[0],1);
+  ca<int> e2(a[0],'2');
+  ca<int> e3(a[0],3.0);
+}