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(){}
Czy to dlatego, B1::fb()
jest traktowany jako B1::fb(B1*)
and B2::fb()
traktowane jako B2::fb(B2*)
? To znaczy, czy niejawny parametr pomaga w ich odróżnieniu?Korzystanie deklaracja (pochodzące klasa)
$ 13.3.1/4-
Dla funkcji nonconversion wprowadzonych przez używając-zgłoszenia na pochodnej klasy funkcja jest uważany należeć do klasy pochodnych do CELÓW definiowanie typu obiektu niejawnego obiektu .
i int d sprzeczne z poprzednią deklaracją z użycia ... – diverscuba23
jaka jest rzeczywista domniemana 13.3.1 $/4 w tym przypadku? – Chubsdad
@chubsdad: Ponieważ 'B2 :: fb()' ukrywa 'B1 :: fb()', 'B1 :: fb()' nie jest uważane za funkcję kandydującą podczas rozwiązywania przeciążenia, więc §13.3.1/4 ma nie stosuje się. –