diff options
author | Marek Polacek <polacek@redhat.com> | 2019-09-23 17:37:54 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2019-09-23 17:37:54 +0000 |
commit | 1a09197cb1bc05a71d1866d1220937289da02c5e (patch) | |
tree | aefb9cfa8c4542ee2235dc93fa2107880eaf40b1 /gcc/testsuite/g++.old-deja | |
parent | ba2b30dc9fa9190101b3eb7ae10415b54ca25e7a (diff) |
PR c++/91844 - Implement CWG 2352, Similar types and reference binding.
* call.c (reference_related_p): Use similar_type_p instead of
same_type_p.
(reference_compatible_p): Update implementation to match CWG 2352.
* cp-tree.h (similar_type_p): Declare.
* typeck.c (similar_type_p): New.
* g++.dg/cpp0x/pr33930.C: Add dg-error.
* g++.dg/cpp0x/ref-bind1.C: New test.
* g++.dg/cpp0x/ref-bind2.C: New test.
* g++.dg/cpp0x/ref-bind3.C: New test.
* g++.old-deja/g++.pt/spec35.C: Remove dg-error.
From-SVN: r276058
Diffstat (limited to 'gcc/testsuite/g++.old-deja')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.pt/spec35.C | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/spec35.C b/gcc/testsuite/g++.old-deja/g++.pt/spec35.C index 581bb8ed537..93e953df7e7 100644 --- a/gcc/testsuite/g++.old-deja/g++.pt/spec35.C +++ b/gcc/testsuite/g++.old-deja/g++.pt/spec35.C @@ -14,9 +14,9 @@ template <typename T> int Foo (T &); // { dg-message "note" } candidate template <typename T> int Qux (T); // { dg-message "note" } template <typename T> int Qux (T const &); // { dg-message "note" } candidate -template <typename T> int Bar (T const *const &); // { dg-message "note" } -template <typename T> int Bar (T *const &); // { dg-message "note" } candidate -template <typename T> int Bar (T *); // { dg-message "note" } candidate +template <typename T> int Bar (T const *const &); +template <typename T> int Bar (T *const &); +template <typename T> int Bar (T *); template <typename T> int Baz (T *const &); // { dg-message "note" } template <typename T> int Baz (T *); // { dg-message "note" } candidate @@ -24,7 +24,7 @@ template <typename T> int Baz (T *); // { dg-message "note" } candi int Baz (int const *ptr, int *ptr2) { Baz (ptr2); // { dg-error "ambiguous" } - Bar (ptr2); // { dg-error "ambiguous" } + Bar (ptr2); Foo (ptr2); // { dg-error "ambiguous" } Qux (ptr2); // { dg-error "ambiguous" } return 0; |