可能超过花括号?

ste*_*fen 2 c++ operator-overloading operators

我几乎可以肯定没有,但我没有找到一个不同的答案:

是否有可能超过花括号?如:

class Foo
{
    int i;
    public:
    int operator{}(int _i){return _i+42;};    
};

int main()
{
    Foo f;
    f{2};
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它从未被提及,既不允许也不允许.gcc 4.6不编译它,但这并不意味着标准不允许它,对吧?

cod*_*ict 9

在C++中,花括号{}不是[](数组下标运算符)或()(函数调用运算符)的运算符,因此它们不能重载.

  • @bdonlan` =`和`,`_do_出现在列表中,但只有当它们是运算符时才能重载; 标点符号时会忽略重载.(因此,`f(a,b)`忽略任何重载的`运算符,()`,但`f((a,b))`不会.) (2认同)