[quote=Thiagosc]Novamente a sua capacidade de leitura falha. Eu jamais disse que aquilo poderia ser feito com generics, mas sim que templates são parecidos com generics, porque pode-se parametrizar classes e funções, com a diferença de que isso é feito em tempo de compilação.
Mas isso é muito limitado. Em Ruby ou Python existe uma espécie de “metaprogramação”, muito mais flexível.
Em Lisp usa-se a própria linguagem para criar macros e pode-se assim criar qualquer coisa. Seja estruturas ou classes completamente diferentes, funções ou implementações de métodos, valores em ambiente léxico ou dinâmico, etc. Trabalha-se diretamente com a árvore do código e por isso é possível fazer coisas que seriam impossíveis ou muito difíceis de serem feitas em outras linguagens.
A metaprogramação em C++ é uma piada em comparação. É uma definição de metaprogramação bem técnica, pois gera código em tempo de compilação. Não deixa de estar correto, mas Ruby já dá um pau nisso. É muito ruim e limitado.[/quote]
E o que diabos isso tem a ver com a discussão?
O recurso em C++ existe, é poderosíssimo. E se o LISP implementou melhor, ótimo. Mas o assunto do tópico compara C++ com Java, para os jogos. No C++, templates serão um recurso importante, e que precisa ser estudado.
Novamente, não é porque o lisp implementa melhor, que no C++ deixou de ser metaprogramação. Além disso, usar templates como os generics é apenas um dos usos de templates. E um dos menores deles. Por isso, volto a dizer, estude templates primeiro, venha falar aqui depois.
Veja técnicas como functors, lambda functions, static assertions, e só depois conversamos.
Aliás, você se engana quanto aos generics também. Generics são feitos para limitar tipos, e templates são feitos para você não depender do sistema de tipos. O que só mostra sua ignorância a respeito do assunto.