В C ++ 11 считается… оператором? - PullRequest
5 голосов
/ 10 марта 2012

Мне было интересно, считается ли ... оператором в C ++ 11.И если это так, каков его приоритет?

Например, рассмотрим этот довольно плохой пример и предположим, что ... это оператор.

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

Как узнать, будет ли barзапускаться с его первым параметром, являющимся something и args... расширенным, или если он будет запущен по результату operator,(something, _args...)?(Бонусный вопрос: могут ли операторы быть перегружены с помощью шаблонов с переменными числами?)

1 Ответ

4 голосов
/ 10 марта 2012

Мне было интересно, считается ли ... оператором в C ++ 11

Нет, ... определенно не считается оператором в C ++ 11. Если вы помните, это былтакже использовался в предыдущем стандарте для обработки ошибок

catch(...)

, и хотя я не уверен, как ... анализируется и анализируется внутри, он определенно не рассматривается как оператор.

Могут ли операторы быть перегружены с помощью шаблонов с переменными числами?

Я не уверен, но я так не думаю.Операторы должны принимать указанный набор параметров, таких как:

int operator + (int param1, my_obj param2);

Я не думаю, что это будет работать с переменными шаблонами.

...