From 54a3b395e0a6adae4fc170c7a69bfedfc4fe9d8d Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Tue, 17 Oct 2017 08:38:07 +0000 Subject: [PATCH] re PR c++/82570 (Lambda fails to compile because it doesn't meet constexpr requirements) 2017-10-17 Paolo Carlini PR c++/82570 * g++.dg/cpp1z/constexpr-lambda18.C: New. From-SVN: r253806 --- gcc/testsuite/ChangeLog | 5 ++++ .../g++.dg/cpp1z/constexpr-lambda18.C | 30 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 589ff0e18db..450e48202fe 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-10-17 Paolo Carlini + + PR c++/82570 + * g++.dg/cpp1z/constexpr-lambda18.C: New. + 2017-10-17 Jakub Jelinek PR tree-optimization/82549 diff --git a/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C new file mode 100644 index 00000000000..639018ba945 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C @@ -0,0 +1,30 @@ +// PR c++/82570 +// { dg-options "-std=c++17" } + +template< typename Body > +inline void iterate(Body body) +{ + body(10); +} + +template< typename Pred > +inline void foo(Pred pred) +{ + iterate([&](int param) + { + if (pred(param)) + { + unsigned char buf[4]; + buf[0] = 0; + buf[1] = 1; + buf[2] = 2; + buf[3] = 3; + } + }); +} + +int main() +{ + foo([](int x) { return x > 0; }); + return 0; +} -- 2.30.2