【问题标题】:How can I calculate at compiletime in c++ [closed]如何在 C++ 编译时计算 [关闭]
【发布时间】:2012-10-09 18:42:29
【问题描述】:

如何计算一些数学表达式,即求 n 的阶乘;在 C++ 编译期间?

【问题讨论】:

标签: c++


【解决方案1】:

Here 是一篇关于 C++ 模板元编程的 wiki 文章。

Here 是另一篇关于编译时函数执行的 wiki 文章。

Here 是关于阶乘的 SO 问题。

让我们以编译时计算阶乘的 wiki 示例为例。

template <int N>
struct Factorial {
    enum { value = N * Factorial<N - 1>::value };
};

template <>
struct Factorial<0> {
    enum { value = 1 };
};

// Factorial<4>::value == 24
// Factorial<0>::value == 1
const int x = Factorial<4>::value; // == 24
const int y = Factorial<0>::value; // == 1

由于所需的所有参数在编译时都是已知的(例如,它们在Factorial&lt;4&gt; 中明确提及),因此编译器能够生成所有需要的代码。之后,Factorial&lt;4&gt; 结构的 value 将为 24,以后可以像您自己硬编码一样使用它。

【讨论】:

  • 介意解释一下反对意见吗?
  • 我猜不鼓励仅链接答案..
  • 为什么?他们解释了这个问题。
  • @mugen 答案也不是很详细,OP 也没有显示任何研究尝试。更不用说这部分是重复的。
  • See here(虽然我没有投反对票)。
【解决方案2】:

欢迎来到所谓的模板元编程。

This page 描述了它是什么。它有一个具体的例子来计算编译时整数的阶乘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2012-02-04
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2011-08-07
    相关资源
    最近更新 更多