aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/lambda-generic-89419.C24
2 files changed, 27 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index da4aa85..3cd5d93 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -4,6 +4,9 @@
* g++.dg/cpp0x/noexcept34.C: New test.
* g++.dg/cpp0x/noexcept35.C: New test.
+ PR c++/89419
+ * g++.dg/cpp1y/lambda-generic-89419.C: New test.
+
2019-02-23 Paul Thomas <pault@gcc.gnu.org>
PR fortran/88117
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-89419.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-89419.C
new file mode 100644
index 0000000..46ce909
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-89419.C
@@ -0,0 +1,24 @@
+// PR c++/89419
+// { dg-do compile { target c++14 } }
+
+struct A;
+struct B {
+ struct C { C (); C (C &); } b;
+};
+struct D { A operator* (); };
+struct A {
+ template <typename T> void foo (T x) { x (this); }
+};
+struct E {
+ auto bar () { return e; }
+ D e;
+};
+struct F { B f; int g; };
+
+int
+main ()
+{
+ E e;
+ auto f = *e.bar ();
+ auto i = [&] { F g; g.g = 1; auto h = [&](auto) { g.g = 0; }; f.foo (h); return g; };
+}