Historias de mi Mundo

jueves, marzo 30, 2006

Why C++ sucks? Part.3472

Leyendo hoy por la blogosfera, mas exactos el planetgnome
he encontrado un articulo de Callum McKenzie en el
cual nos muestra el siguiente codigo que es totalmente correcto
bajo las "leyes" de este L.P.:

#include

template
struct Forever {
enum { value = Forever::value };
};

int main ()
{
std::cout << Forever<1>::value << "\n";
}

Y esto es lo que le suelta g++:

g++ bails out at the 500th recursion with the error message:

forever.cpp:9: error: template instantiation depth exceeds maximum of 500 (use -ftemplate-depth-NN to increase the maximum) instantiating 'struct Forever<501u>'


Que entretenido que es el C++ jajaja.

PD: Estoy leyendo un libro de Ruby y me esta gustando jejejej.

6 Comments:

  • Mira el código que has puesto, porque faltan cosas. Ese código no puede compilar nunca. El template no está bien definido (¿te has olvidado algo en el copypaste?).

    By Blogger Vradick, at 6:04 p. m.  

  • Pues eso es precisamente una de las "virtudes" de C++. El sistema de templates de C++ es una version fea y bastarda de las macros de LISP, pero funcionalmente es similar, aunque mas limitada.

    Sin embargo, como se aprecia en el codigo (esté bien o no), en C++ se puede generar codigo C++ durante la compilacion . Si cambias eso por un bloque de codigo, obtienes un generador de codigo recursivo, pero sin la sobrecarga asociada a la recursion.

    By Anonymous Anónimo, at 6:24 p. m.  

  • Mmmm.....eso de que "c++ sux" diselo a los de FP2 XD

    Se nota que yo soy muy inocente y n00b en el mundillo de la programacion, porque el profesor de FP2 (el pertusa) dijo varias veces que "la libreria fstream incluye la iostream, no es necesario poner esta ultima si usas fstream", y en el libro de la asignatura tambieeen lo pone...

    Y yo como un tonto, me lo creo, y el lunes en el examen de FP2 hice eso, #incluí el fstream y el iostream no, y claro, petaba al compilar y me decia q "cin y cout eran funciones sin declarar"

    Le metí el iostream y listo >_<. Lo que me queda por sufrir y aprender, eh?XD

    By Blogger Skelv, at 6:41 p. m.  

  • Pues me da a mi que si que falta codigo ahora que lo veo XD, luego lo corrijo.

    Y si basicamente es lo que ha dihco el masilla jajajja

    By Blogger Saugar, at 7:48 p. m.  

  • Skelv, C++ es el lenguaje de examenes por preferencia en muchas escuelas. ¿Por qué?, Porque por mucho que domines, siempre se te pilla en algun ejercicio. No existe gente que domine C++ al 100%, quizá su propio creador.

    Yo pondría C a pelo, porque enseña lo justo para la asignatura, y tienes que usar punteros por cojones para el tratamiento de cadenas. (Moñas que soy todos, por no seguir el verdadero camino de K&R). Y por el amor de Cthulhu, no llameis a lo de #include "librerias", los ficheros .h son ARCHIVOS DE CABECERA CON LAS DECLARACIONES de una biblioteca (fichero .o o .a ) que luego se enlazan para generar el codigo final.

    By Anonymous Anónimo, at 8:15 p. m.  

  • Ohhh gran masilla eres el mesias para que todos cambiemos de l.p., indicanos el camino hacia el extraterrestre ese que teneis de mascota XD.

    PD: Skelv lo de fstream contiene a iostream es cierto, sino mira el fichero DE CABECERA CON LAS DECLARACIONES y veras que es correcto, tan solo que el arcaico y adnostozoico compilador de la EPS es una mierda y por aquel entonces no existia eso

    By Blogger Saugar, at 9:07 p. m.  

Publicar un comentario

<< Home

Cuando todo falle, lea el manual de instrucciones