1. 3
  1.  

  2. 1

    C++ template metaprogramming has long been recognized as haskelly or at least functional (in a very strict sense - you can’t have variables). There’s a lot you can do with it if you’re determined - but considered as a programming language it has terrible syntax, no type system (at the meta level), poor performance and very poor tooling. If you need to do turing-complete things at compile time I’ve ultimately found it’s better to just execute a program in a first-class programming language.