gpt4 book ai didi

c++ - 平方根元函数?

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

是否可以使用具有以下签名的元函数计算整数的平方根:

template<unsigned int N> inline double sqrt();

(或者可能使用 constexpr 关键字,我不知道什么是最好的)。这样,sqrt<2>()将被 1.414... 取代在编译时。

这种功能的最佳实现是什么?

最佳答案

这可能不是您想要的,但我想确保您意识到通常通过优化,编译器无论如何都会在编译时计算结果。例如,如果您有以下代码:

void g()
{
f(sqrt(42));
}

使用 g++ 4.6.3 和优化 -O2,生成的汇编代码是:

   9 0000 83EC1C                subl    $28, %esp
11 0003 DD050000 fldl .LC0
12 0009 DD1C24 fstpl (%esp)
13 000c E8FCFFFF call _Z1fd
14 0011 83C41C addl $28, %esp
16 0014 C3 ret
73 .LC0:
74 0000 6412264A .long 1244009060
75 0004 47EC1940 .long 1075440711

sqrt 函数实际上从未被调用,值只是作为程序的一部分存储。

因此,要创建一个在技术上满足您要求的函数,您只需要:

template<unsigned int N> inline double meta_sqrt() { return sqrt(N); }

关于c++ - 平方根元函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12233251/

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