8sa1-gcc/gcc/testsuite/g++.dg/cpp0x/ref-bind5.C
Marek Polacek 406c9a1173 PR c++/91889 - follow-up fix for DR 2352.
* 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
2019-09-28 15:35:37 +00:00

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); }