Re: friend function definition

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 27 March 2018 at 18:12, Jonathan Wakely wrote:
> On 27 March 2018 at 17:49, Hans-Christian Stadler
> <hans-christian.stadler@xxxxxx> wrote:
>> Thanks a lot for clearing that up.
>>
>> Now I just don't understand the text in the N4700 early version of the C++17
>> standard (under class.friend):
>>
>> A function can be defined in a friend declaration of a class if and only if
>> the class is a non-local class (12.4),
>> the function name is unqualified, and the function has namespace scope. [
>> Example:
>> class M {
>> friend void f() { }
>>  // definition of global f, a friend of M,
>>  // not the definition of a member function
>> };
>> — end example ]
>>
>> Anyway, it's probably to wierd a case to spend much time on.
>
> That's unrelated to your example, and is a better question for
> stackoverflow, since it's nothing to do with GCC.

If your confusion is with the wording in the example saying "global f"
then that is correct. The friend declaration defines ::f, but that
doesn't make the name visible to name lookup.

Think about a global function defined in foo.cpp that you want to call
from bar.cpp, just because it's global doesn't mean it's visible in
bar.cpp without a declaration. A declaration needs to be present in
bar.cpp for name lookup to find it.




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux