C++ Meta Programming Function Algebra