diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2017-09-13 18:18:48 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2017-09-13 18:18:48 +0000 |
commit | 97e63e1272bf265d412d89ab8f8249e8d3a9f8b2 (patch) | |
tree | 8ba1c127cb4b36dcd7db937ea3865f289165de32 /gcc | |
parent | bce5091aa995e9faea7c6eb5b11b288bd66bcd98 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice19.C | 29 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-ice20.C | 11 |
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 +} |