Skip to content

TMP and FP

non-type template parameter的computation,主要以template parameter pack的computation、recursion为基础来进行总结。

TMP and FP and non-type template parameter

上面这段话对于理解template metaprogramming是非常重要的:

template metaprogramming can be seen as a form of functional programming

在后面,我们会学习到template parameter和template argument,如果将template metaprogramming看做是一种functional programming的话,这个概念是非常容易理解的。

上面这段话中中特别提及了recursion,这就是典型的functional programming。

需要注意的是,一般使用non-type template parameter来实现compile-time execution,它可以看做是一种典型的functional programming,而其他的template parameter,如type template parameter、template template parameter,其实就不属于functional programming的概念了。

下面的factorial就是一个典型的例子;factorial的实现是典型的functional programming,使用c++的template metaprogramming可以实现compiler-time的functional programming。

TMP VS functional programming

C++: template and functional programming

parse tree、recursion

https://en.wikipedia.org/wiki/Expression_templates

https://en.wikipedia.org/wiki/Spirit_Parser_Framework

https://www.drdobbs.com/cpp/the-spirit-parser-library-inline-parsing/184401692

这让我想到了:template is Turing-complete的