forked from OSchip/llvm-project
In C++11, a class's members are allowed to be nominated as friends.
llvm-svn: 142393
This commit is contained in:
parent
9e320909f5
commit
c30493db3c
|
@ -10045,7 +10045,7 @@ Decl *Sema::ActOnFriendFunctionDecl(Scope *S, Declarator &D,
|
|||
|
||||
// C++ [class.friend]p1: A friend of a class is a function or
|
||||
// class that is not a member of the class . . .
|
||||
if (DC->Equals(CurContext))
|
||||
if (DC->Equals(CurContext) && !getLangOptions().CPlusPlus0x)
|
||||
Diag(DS.getFriendSpecLoc(), diag::err_friend_is_member);
|
||||
|
||||
if (D.isFunctionDefinition()) {
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
|
||||
|
||||
class A {
|
||||
class AInner {
|
||||
};
|
||||
|
||||
void a_member();
|
||||
friend void A::a_member(); // ok in c++11, ill-formed in c++98
|
||||
friend void a_member(); // ok in both, refers to non-member
|
||||
friend class A::AInner; // ok in c++11, extension in c++98
|
||||
friend class AInner; // ok in both, refers to non-member
|
||||
};
|
Loading…
Reference in New Issue