在C ++ 11中,被认为是运营商?

时间:2012-03-10 17:33:28

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

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

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

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

我如何知道bar是否会在第一个参数somethingargs...展开的情况下运行,或者它是否会运行operator,(something, _args...)的结果? (奖金问题:操作员可以使用可变参数模板超载吗?)

1 个答案:

答案 0 :(得分:4)

我想知道...是否被认为是C ++ 11中的运算符

不,...绝对不会被认为是C ++ 11中的运算符。如果你还记得,它也在错误处理的前一个标准中使用

catch(...)

虽然我不确定如何在内部分析和解析...,但绝对不会将其视为运营商。

运营商可以使用可变参数模板重载吗?

我不确定,但我不这么认为。操作员必须采用一组指定的参数,如:

int operator + (int param1, my_obj param2);

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