C ++ 17和重载函数

我正在尝试更新此项目,以便可以在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编译器选项时,是否可能具有重载函数?

评论