marzo 2, 2010
El otro día veíamos la deducción automática de tipos usando auto, con la que el tipo de una variable se deduce de la expresión con la que se inicializa. Para todos los demás casos, desde hace ya varios años, muchos compiladores proporcionan alguna forma de deducción de tipos, normalmente algo parecido a __typeof. El comité de C++ consideró seriamente incluirlo en estándar, pero finalmente lo descartaron en favor de una idea nueva: decltype.
(más…)
Filed under:
C++0x by rodrigo
febrero 25, 2010
La palabra reservada auto es casi con toda seguridad la más inútil de todo el lenguaje C (seguida de lejos por register. Tanto es así que mucha gente ni siquiera sabe que existe porque no la ha visto nunca. Una variable local se declara auto para hacerla automática, es decir que se crea en el punto de declaración y se destruye al salir del bloque declarado. Pero una variable local ya es automática por defecto, a no ser que se defina static o extern, por lo que auto no se usa nunca.
La nueva versión de C++, C++0x, le da un significado nuevo y totalmente diferente a esta palabra reservada, implementando una de las características más deseadas por los ususarios del lenguaje: la deducción automática de tipos.
(más…)
Filed under:
C++0x by rodrigo
febrero 18, 2010
En el post anterior describía cómo las referencias a R-valor permiten definir un constructor de movimiento y un operador de movimiento. Una clase que implementa ambos se llama clase movible.
(más…)
Filed under:
C++0x by rodrigo
febrero 15, 2010
En un post anterior comentaba que en C++ no se puede vincular una referencia a un objeto temporal. En C++0x existe un nuevo tipo de referencias diseñadas para hacer precisamente esto: las referencias a R-valor. Este cambio, aparentemente sutil, es uno de los más importantes del nuevo estándar, y que condiciona muchos de los añadidos adicionales. Por eso es importante comprenderlas bien.
(más…)
Filed under:
C++0x by rodrigo
febrero 8, 2010
error: se requiere un l-valor como operando izquierdo de la asignación
Si has visto alguna vez este error quizás que hayas preguntado qué es exactamente un L-valor y para qué sirve. Es curioso que se puede programar durante muchos años en C++ (o en C, de donde se hereda este concepto) sin tener que preocuparse ni una sola vez por el significado de este mensaje de error. Basta con observar la línea fuente con detenimiento y el error resulta obvio:
(más…)
Filed under:
C++ by rodrigo