2012-03-10 17 views
5

Me preguntaba si ... se consideraba un operador en C++ 11. Y si es el caso, ¿cuál es su prioridad?En C++ 11, ¿se considera un operador?

Por ejemplo consideran que esta bastante mal ejemplo y asumamos ... es un operador.

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

¿Cómo puedo saber si bar se ejecutará con ser su primer parámetro something y args... ampliado, o si su va a ser ejecutado en el resultado de operator,(something, _args...)? (Pregunta extra: se puede sobrecargar los operadores con plantillas variadic?)

+1

"se pueden sobrecargar los operadores con plantillas variadic" No. O por lo menos, usted no conseguir nada por hacerlo. Los operadores siempre toman una cantidad específica de parámetros. –

+0

Ver [esto] (http://stackoverflow.com/questions/2396065/c-overloading-operator-comma-for-variadic-arguments). – ApprenticeHacker

+0

@qdii: Je, NVM :) –

Respuesta

4

me preguntaba si ... era considerado un operador en C++ 11

No, ... definitivamente no es considerado un operador en C++ 11. Si usted recuerda, también se utiliza en la norma anterior en el manejo de errores

catch(...) 

y aunque no estoy seguro de cómo se analiza y analiza sintácticamente internamente la ..., definitivamente no es tratado como un operador.

Puede operadores sobrecargarse con plantillas variadic?

no estoy seguro, pero yo no lo creo. Los operadores deben tomar un conjunto específico de parámetros como:

int operator + (int param1, my_obj param2); 

No creo que funcione con plantillas variadic.