运算符重载将初始化列表作为参数

时间:2017-10-18 09:37:22

标签: c++ operator-overloading visual-studio-2017 initializer-list

我想找到一种方便的方法来检查值是否在一组值中。如果我创建一个如下所示的简单函数,一切都运行良好:

bool IsIn(const int& value, initializer_list<int> initializerList)
{
    vector<int> v(initializerList);
    return find(v.begin(), v.end(), value) != v.end();
}

bool MyFunction()
{
    return IsIn(1, { 1,2,3 });
}

如果我现在将此功能转换为更加用户友好的运算符&gt;&gt;,则会出现错误 C2059:语法错误:'{'

bool operator >>(const int& value, initializer_list<int> initializerList)
{
    vector<int> v(initializerList);
    return find(v.begin(), v.end(), value) != v.end();
}

bool MyFunction()
{
    return 1 >> { 1, 2, 3 };
}

我没有在C ++规范中发现使用初始化列表作为参数仅限于“普通”函数。这是一个错误还是我做错了什么? (我正在使用VS2017)

0 个答案:

没有答案