Abbiamo il seguente esempio da N4296::3.3.9/2 [basic.scope.temp]
:regione dichiarativa di un parametro funzione
namespace N { template<class T> struct A { }; // #1 template<class U> void f(U) { } // #2 struct B { template<class V> friend int g(struct C*); // #3 }; }
Le regioni dichiarativa di
T
,U
eV
sono il modello dichiarazione s su linee#1
,#2
e#3
, rispettivamente. Ma i nomiA
,f
,g
eC
tutto appartengono alla stessa regione dichiarativa - vale a dire, il namespace-corpo diN
.
Non è chiaro perché N
s corpo è la regione dichiarativa di g
e C
. Pensavo fosse il corpo della classe B
s.
Qualcuno può chiarire cosa significa lo standard?
'g' è un modello di funzione, non una funzione. –
@ T.C. punto equo, aggiunto ulteriori dettagli –
@downvoter per favore spiega, questa è la seconda volta che qualcuno fa downvotes senza spiegazione e la prima volta è stato rimosso poco dopo. Si prega di spiegare qualsiasi problema. –