Commit 056a3927 by Jonathan Wakely Committed by Paolo Carlini

re PR c++/50344 (friend declaration confused by const qualifier)

/cp
2011-09-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/50344
	* friend.c (make_friend_class): cv-qualification is ok in a
	friend declaration.

/testsuite
2011-09-22  Jonathan Wakely  <jwakely.gcc@gmail.com>
	    Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/50344
	* g++.dg/template/friend52.C: New.

Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>

From-SVN: r179088
parent e7dd5b57
2011-09-22 Jonathan Wakely <jwakely.gcc@gmail.com>
Paolo Carlini <paolo.carlini@oracle.com>
PR c++/50344
* friend.c (make_friend_class): cv-qualification is ok in a
friend declaration.
2011-09-21 Paolo Carlini <paolo.carlini@oracle.com> 2011-09-21 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/50454 PR c++/50454
......
/* Help friends in C++. /* Help friends in C++.
Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2007, 2008, 2010 Free Software Foundation, Inc. 2007, 2008, 2010, 2011 Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -237,6 +237,8 @@ make_friend_class (tree type, tree friend_type, bool complain) ...@@ -237,6 +237,8 @@ make_friend_class (tree type, tree friend_type, bool complain)
return; return;
} }
friend_type = cv_unqualified (friend_type);
if (friend_depth) if (friend_depth)
/* If the TYPE is a template then it makes sense for it to be /* If the TYPE is a template then it makes sense for it to be
friends with itself; this means that each instantiation is friends with itself; this means that each instantiation is
......
2011-09-22 Jonathan Wakely <jwakely.gcc@gmail.com>
Paolo Carlini <paolo.carlini@oracle.com>
PR c++/50344
* g++.dg/template/friend52.C: New.
2011-09-22 Richard Sandiford <richard.sandiford@linaro.org> 2011-09-22 Richard Sandiford <richard.sandiford@linaro.org>
* gcc.target/arm/cmp-1.c: New test. * gcc.target/arm/cmp-1.c: New test.
......
// PR c++/50344
// { dg-options "" }
template <typename T> class C
{
friend T;
int i;
};
struct S
{
int f()
{
C<const S> c;
return c.i;
}
};
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