diff options
author | Jason Merrill <jason@redhat.com> | 2021-02-02 10:08:48 -0500 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2021-02-02 12:11:39 -0500 |
commit | 709718d4d89e5976257f53e67dcb8ba704574c56 (patch) | |
tree | 045290607875a0c61043a01085bc7b86614eba64 /gcc/testsuite | |
parent | d14cf89b94299d6d66c150fbbb9899a5dd91e7d4 (diff) | |
download | gcc-709718d4d89e5976257f53e67dcb8ba704574c56.zip gcc-709718d4d89e5976257f53e67dcb8ba704574c56.tar.gz gcc-709718d4d89e5976257f53e67dcb8ba704574c56.tar.bz2 |
c++: Member fns and deduction guide rewriting [PR98929]
My patch for 96199 had us re-substitute the parameter types of a constructor
in order to rewrite mentions of members into dependent references. We need
to do that for member functions, too.
gcc/cp/ChangeLog:
PR c++/98929
PR c++/96199
* error.c (dump_expr): Ignore dummy object.
* pt.c (tsubst_baselink): Handle dependent scope.
gcc/testsuite/ChangeLog:
PR c++/98929
* g++.dg/cpp1z/class-deduction-decltype1.C: New test.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1z/class-deduction-decltype1.C | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction-decltype1.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction-decltype1.C new file mode 100644 index 0000000..b83f7ad --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1z/class-deduction-decltype1.C @@ -0,0 +1,11 @@ +// PR c++/98929 +// { dg-do compile { target c++17 } } + +template <typename T> +struct A { + void foo (); + using c = decltype (foo ()); + A (c); // { dg-message {decltype \(A<T>::foo} } +}; +A d; // { dg-error "deduction failed" } +// { dg-error "no match" "" { target *-*-* } .-1 } |