re PR c++/82570 (Lambda fails to compile because it doesn't meet constexpr requirements)
authorPaolo Carlini <paolo.carlini@oracle.com>
Tue, 17 Oct 2017 08:38:07 +0000 (08:38 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Tue, 17 Oct 2017 08:38:07 +0000 (08:38 +0000)
2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/82570
* g++.dg/cpp1z/constexpr-lambda18.C: New.

From-SVN: r253806

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp1z/constexpr-lambda18.C [new file with mode: 0644]

index 589ff0e18dbead60497d1dea7c8a9413906f16af..450e48202fec70026a95fc8030ab36a941173058 100644 (file)
@@ -1,3 +1,8 @@
+2017-10-17  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/82570
+       * g++.dg/cpp1z/constexpr-lambda18.C: New.
+
 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
 
        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 (file)
index 0000000..639018b
--- /dev/null
@@ -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;
+}