gpt4 book ai didi

c++ - c++ 模板元编程是函数式编程的一种形式吗

转载 作者:可可西里 更新时间:2023-11-01 16:02:33 34 4
gpt4 key购买 nike

C++ 模板元编程是函数式编程的一种形式吗?如果是,是否存在一些陷阱,例如与 c++ 模板元编程相关的非尾递归的 stackoverflow?

对于 this question 中的阶乘模板示例,我猜这是标准的函数式编程。或者只是表面上的相似?

#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;
}

最佳答案

is c++ Template Metaprogramming a form of functional programming?

是的!模板扩展没有副作用,因此它是纯函数的。

If it is, do some pitfalls like stackoverflow for non-tail recursion relevant for c++ Template Metaprogramming?

当然。阶乘并不能很好地证明这一点,因为结果会在堆栈溢出之前很久就溢出,但是长递归肯定会导致编译器出错。然而,有趣的是,编译器倾向于以自动内存的方式实现模板。例如,斐波那契数列的简单编写实现往往会在 O(n) 时间内编译,而不是 O(2^n)。

关于c++ - c++ 模板元编程是函数式编程的一种形式吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11462037/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com