-
- Downloads
c++: P0847R7 (deducing this) - xobj lambdas. [PR102609]
This implements support for xobj lambdas. There are extensive tests
included, but not exhaustive. Dependent lambdas should work and have been
tested lightly, but we need more exhaustive tests for them.
PR c++/102609
gcc/cp/ChangeLog:
PR c++/102609
C++23 P0847R7 (deducing this) - xobj lambdas.
* lambda.cc (build_capture_proxy): Don't fold direct object types.
* parser.cc (cp_parser_lambda_declarator_opt): Handle xobj lambdas,
diagnostics. Comments also updated.
* pt.cc (tsubst_function_decl): Handle xobj lambdas. Check object
type of xobj lambda call operator, diagnose incorrect types.
(tsubst_lambda_expr): Update comment.
* semantics.cc (finish_decltype_type): Also consider by-value object
parameter qualifications.
gcc/testsuite/ChangeLog:
PR c++/102609
C++23 P0847R7 (deducing this) - xobj lambdas.
* g++.dg/cpp23/explicit-obj-diagnostics8.C: New test.
* g++.dg/cpp23/explicit-obj-lambda1.C: New test.
* g++.dg/cpp23/explicit-obj-lambda10.C: New test.
* g++.dg/cpp23/explicit-obj-lambda11.C: New test.
* g++.dg/cpp23/explicit-obj-lambda12.C: New test.
* g++.dg/cpp23/explicit-obj-lambda13.C: New test.
* g++.dg/cpp23/explicit-obj-lambda2.C: New test.
* g++.dg/cpp23/explicit-obj-lambda3.C: New test.
* g++.dg/cpp23/explicit-obj-lambda4.C: New test.
* g++.dg/cpp23/explicit-obj-lambda5.C: New test.
* g++.dg/cpp23/explicit-obj-lambda6.C: New test.
* g++.dg/cpp23/explicit-obj-lambda7.C: New test.
* g++.dg/cpp23/explicit-obj-lambda8.C: New test.
* g++.dg/cpp23/explicit-obj-lambda9.C: New test.
Signed-off-by:
Waffl3x <waffl3x@protonmail.com>
Showing
- gcc/cp/lambda.cc 3 additions, 1 deletiongcc/cp/lambda.cc
- gcc/cp/parser.cc 79 additions, 5 deletionsgcc/cp/parser.cc
- gcc/cp/pt.cc 69 additions, 5 deletionsgcc/cp/pt.cc
- gcc/cp/semantics.cc 7 additions, 3 deletionsgcc/cp/semantics.cc
- gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics8.C 68 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics8.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda1.C 25 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda1.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda10.C 39 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda10.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda11.C 46 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda11.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda12.C 103 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda12.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda13.C 103 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda13.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C 23 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda2.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda3.C 64 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda3.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda4.C 23 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda4.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda5.C 21 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda5.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda6.C 873 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda6.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda7.C 20 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda7.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda8.C 87 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda8.C
- gcc/testsuite/g++.dg/cpp23/explicit-obj-lambda9.C 46 additions, 0 deletionsgcc/testsuite/g++.dg/cpp23/explicit-obj-lambda9.C
Loading
Please register or sign in to comment