gpt4 book ai didi

c++ - 描述这个元程序的内存消耗

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:06 25 4
gpt4 key购买 nike

我在一本关于元编程的书中找到了这个工作代码 -

template<unsigned long N>
struct binary
{
static unsigned const value = binary<N/10>::value *2 + N%10;
};

template<>
struct binary<0>
{
static unsigned const value = 0;
};

int main()
{
unsigned x = binary<101010>::value;
cout << x;
}

我的问题是 - value 的内存分配在哪里?是否分配在数据段上?

此外,该书还说这段代码会产生一系列模板实例化,这些实例化以类似于递归的方式计算结果。这是否意味着对于每个模板实例化,都会在数据段上分配一个新的 unsigned

最佳答案

value没有定义。此类静态数据成员只能以不需要地址的方式使用(它们不能odr-used)。它们的值将被内联,就好像你有 unsigned x = 42; .

当然编译器必须以某种方式实例化所有模板特化并计算binary<101010>::value .但编译完成后就不再重要了。

关于c++ - 描述这个元程序的内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36927671/

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