J'ai corrigé un bug récemment.
Dans le code suivant, l'une des fonctions surchargées était const et l'autre non. Le problème sera résolu en rendant les deux fonctions const.
Ma question est de savoir pourquoi le compilateur ne s'en plaint que lorsque le paramètre est 0.
#include <iostream>
#include <string>
class CppSyntaxA
{
public:
void f(int i = 0) const { i++; }
void f(const std::string&){}
};
int main()
{
CppSyntaxA a;
a.f(1); // OK
//a.f(0); //error C2666: 'CppSyntaxA::f': 2 overloads have similar conversions
return 0;
}