* call.c (involves_qualification_conversion_p): New function. (direct_reference_binding): Build a ck_qual if the conversion would involve a qualification conversion. (convert_like_real): Strip the conversion created by the ck_qual in direct_reference_binding. * g++.dg/cpp0x/ref-bind3.C: Add dg-error. * g++.dg/cpp0x/ref-bind4.C: New test. * g++.dg/cpp0x/ref-bind5.C: New test. * g++.dg/cpp0x/ref-bind6.C: New test. * g++.old-deja/g++.pt/spec35.C: Revert earlier change. From-SVN: r276251
18 lines
419 B
C
18 lines
419 B
C
// PR c++/91889 - follow-up fix for DR 2352.
|
|
// { dg-do compile { target c++11 } }
|
|
|
|
template <typename U> struct A { typedef U *type; };
|
|
struct B {
|
|
typedef A<B>::type node_ptr;
|
|
};
|
|
struct C {
|
|
typedef B::node_ptr node_ptr;
|
|
typedef A<const B>::type const_node_ptr;
|
|
};
|
|
struct {
|
|
void to_value_ptr(C::node_ptr) {};
|
|
void to_value_ptr(const C::const_node_ptr &);
|
|
} b;
|
|
C::node_ptr a;
|
|
void fn1() { b.to_value_ptr(a); }
|