Я недавно исправил ошибку.
В следующем коде одна из перегруженных функций была константной, а другая - нет. Проблема будет исправлена, если сделать обе функции константными.
У меня вопрос, почему компилятор жаловался на это только тогда, когда параметр был 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;
}