struct B1{
int d;
void fb(){};
};
struct B2 : B1{
using B1::d;
using B1::fb;
int d; // why this gives error?
void fb(){} // and this does not?
};
int main(){}
Forse perché, B1::fb()
è trattata come B1::fb(B1*)
and B2::fb()
trattati come B2::fb(B2*)
? Cioè, il parametro implicito aiuta a distinguerli?Utilizzando dichiarazione (classe Derived)
$ 13.3.1/4-
Per le funzioni non conversione introdotte da una dichiarazione using in un derivato classe, la funzione è considerata essere un membro della classe derivata per fini di definizione del tipo di parametro implicito dell'oggetto.
e int d conflitti con la precedente dichiarazione di esso dall'uso ... – diverscuba23
qual è la vera implicazione di $ 13.3.1/4 in quel caso? – Chubsdad
@chubsdad: Poiché 'B2 :: fb()' nasconde 'B1 :: fb()', 'B1 :: fb()' non è considerato una funzione candidata durante la risoluzione di sovraccarico, quindi §13.3.1/4 non non si applica. –