gpt4 book ai didi

c++ - 这个模板创建的实际源代码是什么样的?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:12 27 4
gpt4 key购买 nike

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

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


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

在预编译之后,如果我们能神奇地看到编译器产生的结果,我们真的会看到:

const int x = 24;
const int y = 1;

我们会看到 struct Factorial 的实际定义吗?如果是这样,他们看起来如何?我正在尝试围绕元编程过程的这一部分进行思考。

最佳答案

在此代码上使用 g++ -fdump-tree-original,我看到以下结果,对于这种情况,这似乎证实了您的怀疑:

;; Function int main() (null)
;; enabled by -tree-original



{
const int x = 24;
const int y = 1;

<<cleanup_point const int x = 24;>>;
<<cleanup_point const int y = 1;>>;
}
return <retval> = 0;

关于c++ - 这个模板创建的实际源代码是什么样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16755832/

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