【问题标题】:In C++11, is … considered an operator?在 C++11 中,……是否被视为运算符?
【发布时间】:2012-03-10 17:33:27
【问题描述】:

我想知道 ... 在 C++11 中是否被视为运算符。如果是这样,它的优先级是什么?

例如考虑这个非常糟糕的例子并假设 ... 是一个运算符。

template<typename T, typename...Args>
void foo(T _elm, Args... _args)
{
   bar(something,_args...);
}

我如何知道bar 是否会在其第一个参数为somethingargs... 扩展的情况下运行,或者它是否会在operator,(something, _args...) 的结果上运行? (额外的问题:操作符可以用可变参数模板重载吗?)

【问题讨论】:

  • "可以用可变参数模板重载运算符" 不。或者至少,这样做你不会得到任何东西。运算符始终采用特定数量的参数。
  • this
  • @Nicol operetor() 可以接受任意数量的参数。

标签: c++ variadic-templates operator-precedence


【解决方案1】:

我想知道……在 C++11 中是否被视为运算符

不,... 在 C++ 11 中绝对不被视为运算符。如果您还记得,它在以前的标准中也用于错误处理

catch(...)

虽然我不确定...是如何在内部进行分析和解析的,但它绝对不被视为运算符。

可以使用可变参数模板重载运算符吗?

我不确定,但我不这么认为。运算符必须采用一组指定的参数,例如:

int operator + (int param1, my_obj param2);

我认为它不适用于可变参数模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 2013-05-10
    相关资源
    最近更新 更多