- Pourquoi le code suivant échantillon ne produisent pas d'ambiguïté
- Est-il possible d'appeler la deuxième version? (Si ce n'est pas un bug)
#include <iostream>
using namespace std;
void foo(const int*){cout << "no ref";}
void foo(const int*&){cout << "on ref";}
int main()
{
int* i=nullptr;
foo(i);
}
EDIT:const T * & T * et const ne produisent pas d'ambiguïté sur la surcharge de fonction
Ce
#include <iostream>
using namespace std;
void foo(const int){cout << "no ref";}
void foo(const int&){cout << "on ref";}
int main()
{
int i=0;
foo(i);
}
Do produire l'ambiguïté.
Par ailleurs, supprimer l'ambiguïté de produire const.
compilateur: g ++ 5.3.0 avec le drapeau --std = C++ 14
Oh, vous avez raison. BTW, puis-je appeler la deuxième version? –
Et pouvez-vous également me dire pourquoi, pour un type non-pointeur, cela produit une ambiguïté? –
@appleapple Voir ma version modifiée Et qu'entendez-vous par "type non-pointeur"? – songyuanyao