[LLVMbugs] [Bug 6954] New: Instantiating friend declaration injects friend into namespace scope
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Tue Apr 27 07:53:19 PDT 2010
http://llvm.org/bugs/show_bug.cgi?id=6954
Summary: Instantiating friend declaration injects friend into
namespace scope
Product: clang
Version: trunk
Platform: PC
OS/Version: All
Status: NEW
Keywords: accepts-invalid
Severity: normal
Priority: P
Component: C++
AssignedTo: unassignedclangbugs at nondot.org
ReportedBy: dgregor at apple.com
CC: llvmbugs at cs.uiuc.edu, dgregor at apple.com
If a class template contains a friend function declaration (whose type does not
depend on the class template's template parameters), and we instantiate that
class template twice, the friend function becomes visible when it shouldn't:
cove:clang dgregor$ cat t.cpp
template<typename T>
struct X {
operator int();
friend void f(int x);
};
int array0[sizeof(X<int>)];
int array1[sizeof(X<float>)];
void g() {
f(5); // expected-error{{undeclared identifier 'f'}}
}
cove:clang dgregor$ clang++ -fsyntax-only t.cpp
cove:clang dgregor$ g++ -fsyntax-only t.cpp
t.cpp: In function ‘void g()’:
t.cpp:11: error: ‘f’ was not declared in this scope
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list