diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1y/lambda-generic-89419.C | 24 |
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; }; +} |