public inbox for gcc-help@gcc.gnu.org
 help / color / mirror / Atom feed
From: Graziano Servizi <Graziano.Servizi@bo.infn.it>
To: gcc-help@gcc.gnu.org
Subject: Question
Date: Tue, 07 Oct 2014 13:57:00 -0000	[thread overview]
Message-ID: <5433F137.8050008@bo.infn.it> (raw)

I read in the 3.4.1.9 clause of the C++11 standard:

Name lookup for a name used in the definition of a friend function 
(11.3) defined inline in the class granting
friendship shall proceed as described for lookup in member function 
definitions. If the friend function is
not defined in the class granting friendship, name lookup in the friend 
function definition shall proceed as
described for lookup in namespace member function definitions.

Later, in the 11.3.6 clause I found:


A function can be defined in a friend declaration of a class if and only 
if the class is a non-local class (9.8),
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 ]


So, if I have well understood I could write such a short code:

# include <iostream>

class P
  {
   friend void friend_inline()
    {std :: cout << P :: Name << ' ' << p << '\n';}
   static constexpr int Name = 20;
   static constexpr double p = 12.5;

   };

int main()
  {
   P p;
   // how can I call friend_inline ?
}

which indeed is compiled by 4.8.3 g++ compiler. But the question is in 
the comment: I tried both the call as if friend_inline was in global 
scope (the standard said "global definition") and the call through the 
::  scope resolution operator such as

P :: friend_inline();

Neither worked. I also tried adding a public member to P as a "wrapper" 
of friend_inline (so making it and its friendship redundant), but the 
compiler claimed that friend_inline was undeclared in the class scope...

I can't understand...


                          Graziano Servizi


             reply	other threads:[~2014-10-07 13:57 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-07 13:57 Graziano Servizi [this message]
2014-10-12 12:54 ` Question David Hagood
2014-10-13  9:55   ` Question Jonathan Wakely
  -- strict thread matches above, loose matches on Subject: below --
2022-11-29  9:03 Question Mo Alamili
2022-12-02  9:06 ` Question Mo Alamili
     [not found] <20200831201750.74266362@arch.localdomain>
     [not found] ` <20200903232726.ba28157e5ee86c0dbd76f723@wp.pl>
2020-09-04 22:49   ` Question, using gcc, forum tele
2020-09-04 23:44     ` Question tele
2014-07-21  8:51 question Graziano Servizi
2014-07-21  9:10 ` question Jonathan Wakely
2014-02-03 17:37 question Graziano Servizi
2014-02-03 17:53 ` question Ángel González
2014-02-04  8:11 ` question Jonathan Wakely
2005-10-29 21:02 Question Matias Trocki
2005-10-30  5:00 ` Question Ian Lance Taylor
2004-12-02 15:11 Question Roberto Ausas
2004-12-02 15:25 ` Question Leopold Palomo-Avellaneda
2004-12-02 15:36 ` Question Eljay Love-Jensen
2004-08-19 16:21 question balan
2004-08-19 16:27 ` question Eljay Love-Jensen
2002-06-13 16:17 question Brett Hunt
2002-06-13 10:54 question Antonio Fontinha
1999-12-15 11:06 question petar
1999-12-31 22:24 ` question petar
1999-10-18 10:03 Question Rui Pedro Fernandes
1999-10-31 13:57 ` Question Rui Pedro Fernandes

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5433F137.8050008@bo.infn.it \
    --to=graziano.servizi@bo.infn.it \
    --cc=gcc-help@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).