Marcelo Caro | 23 Dec 2008 23:48
Picon

Re: suerte en los firings

No, eso no anda, la justificación que creo correcta es la siguiente:

Según el standar hay una conversión implícita de nombre de función a puntero a función. Aunque esta conversion sea exact match al realizarse  lo que tenemos es un r-value. El operador ++ solo opera sobre lvalues.

Este caso es parecido al siguiente:

int x[10];
int *r=x++;

Por otro lado, creo que no se puede hacer aritmetica de punteros con punteros a funciones.
Sospecho que un puntero a funcion no es un tipo completo (por ese motivo no se puede hacer aritmerica), por eso no se puede hacer aritmetica de funciones.

(Alguien me podria confirmar la ultima hipotisis?)

Saludos!!




2008/12/23 Daniel Gutson <danielgutson-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
MAÑANA voy a hacer un resumen de todo lo q dijeron (ya estando en San Juan, tal vez lo haga esta noche en el micro) y las rtas.

Ahora me gusta más, todos respondieron (bueno, faltan Esteban y Matías, sugiéranles q participen :) ).

Sólo para aportar malicia....

   int f();
 
   int (*x)()  = f++;

?


On Tue, Dec 23, 2008 at 5:47 PM, Fernando Cacciola <fernando.cacciola-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:

Hola Hernán, ya te cansaste de Mountain View? :)

> 4- en realidad no lo prob'e, pero supongo que no deberia andar ninguna,
> ya que el 4 no tiene una direccion de memoria, es una constante que el
> compilador pone directamente en el ejecutable, no es una variable con
> memoria asignada.
>

Eso es totalmente cierto, pero daniel preguntó por el caso especial de:

const int & c = <integral constant expression>

porque esto está especificamente soportado.

Qué es lo ocurre en este caso exactamente?

 const int& r = 1 ;

los objetos referenciados son lvalues o rvalues?

el literal 1 es un lvalue o un rvalue?

y entonces? qe ocurre cuando se "bindea" r al 1?


Saludos

Fernando









--
          Marcelo

--~--~---------~--~----~------------~-------~--~----~
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
-~----------~----~----~----~------~----~------~--~---


Gmane