aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2017-09-13 18:18:48 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2017-09-13 18:18:48 +0000
commit97e63e1272bf265d412d89ab8f8249e8d3a9f8b2 (patch)
tree8ba1c127cb4b36dcd7db937ea3865f289165de32 /gcc
parentbce5091aa995e9faea7c6eb5b11b288bd66bcd98 (diff)
downloadgcc-97e63e1272bf265d412d89ab8f8249e8d3a9f8b2.zip
gcc-97e63e1272bf265d412d89ab8f8249e8d3a9f8b2.tar.gz
gcc-97e63e1272bf265d412d89ab8f8249e8d3a9f8b2.tar.bz2
re PR c++/61362 (g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2 does not compile lambda with template)
2017-09-13 Paolo Carlini <paolo.carlini@oracle.com> PR c++/61362 * g++.dg/cpp0x/lambda/lambda-ice19.C: New. * g++.dg/cpp0x/lambda/lambda-ice20.C: Likewise. From-SVN: r252724
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice19.C29
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice20.C11
3 files changed, 46 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f9493be..71e2b36 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2017-09-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/61362
+ * g++.dg/cpp0x/lambda/lambda-ice19.C: New.
+ * g++.dg/cpp0x/lambda/lambda-ice20.C: Likewise.
+
2017-09-13 Steve Ellcey <sellcey@cavium.com>
PR tree-optimization/80925
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice19.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice19.C
new file mode 100644
index 0000000..9fb43cd
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice19.C
@@ -0,0 +1,29 @@
+// PR c++/61362
+// { dg-do compile { target c++11 } }
+
+struct function {
+ template<class F>
+ function(F){}
+
+ void operator()(...) {}
+};
+
+struct Node {
+ unsigned length;
+};
+
+template<typename N>
+class C {
+public:
+ unsigned longest = 0;
+ function f = [this](N node) {
+ if(node->length > this->longest) this->longest = node->length;
+ };
+};
+
+int main() {
+ Node n;
+ n.length = 5;
+ C<Node*> c;
+ c.f(&n);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice20.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice20.C
new file mode 100644
index 0000000..ae1b61b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice20.C
@@ -0,0 +1,11 @@
+// PR c++/61362
+// { dg-do compile { target c++11 } }
+
+template <typename>
+struct S {
+ int f{[this](){return 42;}()};
+};
+
+int main(){
+ return S<int>{}.f; // should be 42
+}