Untyped lambda calculus implementation in compile time C++