У меня есть проект, который я пытался обновить, чтобы я мог использовать заголовок в VS2019. Когда я изменяю опцию компилятора «Стандарт языка C ++» с «По умолчанию» на «/ std: c ++ 17», следующий код ломается:
class ATL_NO_VTABLE CAPropertyPage :
{
public:
struct INFO_STRUCT
{
INFO_STRUCT()
: deviceType(0)
, index(0)
{
};
bool operator ==(const CAtlString &str)
{
return name.CompareNoCase(str) == 0;
}
bool operator ==(const CString &str)
{
return name.CompareNoCase(str) == 0;
}
bool operator ==(const INFO_STRUCT &is)
{
return name.CompareNoCase(is.name) == 0;
}
CString name;
DWORD deviceType;
int index;
};
};
Он прекрасно компилируется с Default, но с / std: c ++ 17 Я получаю следующее сообщение об ошибке:
error C2535: 'bool CAPropertyPage::INFO_STRUCT::operator ==(const ATL::CAtlString &)': member function already defined or declared
message : see declaration of 'CAPropertyPage::INFO_STRUCT::operator =='
Таким образом, перегруженная функция не поддерживается. Возможно ли иметь перегруженные функции при использовании параметра компилятора / std: c ++ 17?