Commit c497b976 by Nathan Sidwell Committed by Nathan Sidwell

re PR c++/14397 (Access check for wrong copy constructor)

cp:
	PR c++/14397
	* call.c (convert_like_real): Build a const qualified temporary,
	when testing ctor access.
testsuite:
	PR c++/14397
	* g++.dg/overload/ref1.C: New.

From-SVN: r79196
parent 205b4f1d
2004-03-09 Nathan Sidwell <nathan@codesourcery.com>
PR c++/14397
* call.c (convert_like_real): Build a const qualified temporary,
when testing ctor access.
2004-03-09 Mark Mitchell <mark@codesourcery.com>
* call.c (initialize_reference): Fix typo.
......
......@@ -4209,9 +4209,10 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
if (convs->check_copy_constructor_p)
/* Generate a temporary copy purely to generate the required
diagnostics. */
build_temp (build_dummy_object (totype), totype,
LOOKUP_NORMAL|LOOKUP_ONLYCONVERTING,
&diagnostic_fn);
build_temp
(build_dummy_object
(build_qualified_type (totype, TYPE_QUAL_CONST)),
totype, LOOKUP_NORMAL|LOOKUP_ONLYCONVERTING, &diagnostic_fn);
return expr;
case ck_ambig:
/* Call build_user_type_conversion again for the error. */
......
2004-03-09 Nathan Sidwell <nathan@codesourcery.com>
PR c++/14397
* g++.dg/overload/ref1.C: New.
2004-03-09 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/14409
......
// Copyright (C) 2004 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 5 Mar 2004 <nathan@codesourcery.com>
// Origin: schmid@snake.iap.physik.tu-darmstadt.de
// Bug 14397: Bogus access error.
struct S {
S (int);
S(S const&);
private:
S(S&);
};
S foo()
{
int result = 0;
S s ((0,S (result)));
return S (result);
}
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