Dado que los operadores unarios de prefijo pueden ser "implementados por una función miembro no estática sin parámetros o una función no miembro con un parámetro" (§13.5.1 [over.unary]/1), ¿hay alguna diferencia además de las razones de diseño de encapsulación/reutilización de código habituales que se aplican a las opciones de función miembro/no miembro?unary minus overload: miembro o no miembro?
Para operadores binarios, there's a semantic difference porque los no miembros permiten conversiones implícitas de sus operandos de la mano izquierda. No parece haber nada de eso para los operadores unarios, pero el estándar define std::complex
como un operador de negación unificado (§26.4.6 [complex.ops]), mientras que std::valarray
y std::duration
's los operadores de negación unaria son miembros (§26.6.2.6 [valarray.unary], §20.11.5.3 [time.duration.arithmetic]). Hay un matiz?
Al citar secciones específicas del estándar, es posible que desee mencionar a qué versión se refiere. –
@ André Caron Citado de la versión n3290 de C++ 11, por lo que pude mostrar 'duration'. – Cubbi