diff options
-rw-r--r-- | gcc/cp/pt.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/lambda-this7.C | 11 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 907ca87..9c03c5a 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -14633,7 +14633,8 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain) && DECL_BIT_FIELD_TYPE (TREE_OPERAND (ve, 1)) == type) type = TREE_TYPE (ve); else - gcc_checking_assert (TREE_TYPE (ve) == type); + gcc_checking_assert (TYPE_MAIN_VARIANT (TREE_TYPE (ve)) + == TYPE_MAIN_VARIANT (type)); SET_DECL_VALUE_EXPR (r, ve); } if (CP_DECL_THREAD_LOCAL_P (r) diff --git a/gcc/testsuite/g++.dg/cpp1z/lambda-this7.C b/gcc/testsuite/g++.dg/cpp1z/lambda-this7.C new file mode 100644 index 0000000..8137061 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/lambda-this7.C @@ -0,0 +1,11 @@ +// PR c++/95193 +// { dg-do compile { target c++17 } } + +struct X { + void foo() const { + auto GL1 = [*this](auto a) { + }; + + GL1("abc"); + } +}; |