Commit b80dfe44 by Jason Merrill Committed by Jason Merrill

PR c++/79503 - inherited ctor taking base class

	* call.c (add_function_candidate): Also check that
	DECL_INHERITED_CTOR_BASE is reference-related to the parameter type.

From-SVN: r245586
parent c9688c53
2017-02-19 Jason Merrill <jason@redhat.com>
PR c++/79503 - inherited ctor taking base class
* call.c (add_function_candidate): Also check that
DECL_INHERITED_CTOR_BASE is reference-related to the parameter type.
2017-02-19 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/79380
......
......@@ -2057,7 +2057,9 @@ add_function_candidate (struct z_candidate **candidates,
{
tree ptype = non_reference (TREE_VALUE (parmlist));
tree dtype = DECL_CONTEXT (fn);
if (reference_related_p (ptype, dtype))
tree btype = DECL_INHERITED_CTOR_BASE (fn);
if (reference_related_p (ptype, dtype)
&& reference_related_p (btype, ptype))
{
viable = false;
reason = inherited_ctor_rejection ();
......
// PR c++/79503
// { dg-do compile { target c++11 } }
struct payload {};
struct base: private payload {
base(payload) {}
};
struct derived: base {
using base::base;
};
int main()
{
payload data;
// error: no matching function for call to 'derived::derived(payload&)'
// note: candidate: base::base(payload)
// note: an inherited constructor is not a candidate for initialization from an expression of the same or derived type
derived demo(data);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment