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(){}
Est-ce parce que, B1::fb()
est traité comme B1::fb(B1*)
and B2::fb()
traité comme B2::fb(B2*)
? Autrement dit, le paramètre implicite aide-t-il à les distinguer?déclaration utilisant (classe dérivée)
$ 13.3.1/4-
Pour les fonctions introduites par la non-conversion en utilisant une déclaration dans un dérivé classe, la fonction est considérée comme être membre de la classe dérivée pour le but de définir le type de le paramètre d'objet implicite.
et int d en conflit avec la déclaration précédente de l'utilisation ... – diverscuba23
quelle est la réelle implicaation de 13.3.1/4 $ dans ce cas? – Chubsdad
@chubsdad: Puisque 'B2 :: fb()' cache 'B1 :: fb()', 'B1 :: fb()' n'est pas considéré comme une fonction candidate pendant la résolution de surcharge, donc le §13.3.1/4 fait ne s'applique pas. –