Melhor introdução à metaprogramação de modelos C ++? [fechadas]

A metaprogramação estática (também conhecida como "metaprogramação de modelos") é uma ótima técnica de C ++ que permite a execução de programas em tempo de compilação. Uma lâmpada se acendeu na minha cabeça assim que li este exemplo de metaprogramação canônica:

#include <iostream>
using namespace std;

template< int n >
struct factorial { enum { ret = factorial< n - 1 >::ret * n }; };

template<>
struct factorial< 0 > { enum { ret = 1 }; };

int main() {
    cout << "7! = " << factorial< 7 >::ret << endl; // 5040
    return 0;
}

Se alguém quiser aprender mais sobre metaprogramação estática em C ++, quais são as melhores fontes (livros, sites, cursos on-line, etc.)?

questionAnswers(8)

yourAnswerToTheQuestion