【发布时间】:2021-06-13 02:15:31
【问题描述】:
我目前正在尝试学习如何使用模板元编程在 C++ 中编写功能代码
这是我对递归斐波那契序列生成器的尝试
template<int i, int x = 0, int y = 1>
struct Fib : Fib<i-1, y, x+y> {};
template<int x, int y>
struct Fib<0, x, y> {
enum { value = x };
};
这似乎可以很好地获取值。
但是,当尝试将变量作为参数传递给 Fib<i>::value 之类的模板时,我得到编译器错误:
the value of ‘i’ is not usable in a constant expression.
我的主要问题是如何避免或绕过这个错误?
但我也有关于如何使用这种代码将东西写入标准输出的问题,不知道我可以在哪里实现cout
【问题讨论】:
-
好吧,你不能那样做。