gpt4 book ai didi

c++ - 互换 func<7>(42) 和 func(42, 7) 模板参数语法

转载 作者:行者123 更新时间:2023-11-28 07:23:12 26 4
gpt4 key购买 nike

以下模板

template<typename Data, typename Number>
int compute(Data d, Number n) {
if(n > 10) SLOW(d)
if(n < 30) EXPENSIVE(d)
if(n < -10) .. if(..) // etc.
return d.abc();
}

有时用 Number n 调用动态计算:compute(data, runtime_number) ,有时使用编译时已知参数:compute(data, 3) .

如果我不相信编译器会优化后一种情况(有或没有内联),但相信它足以使 if(false) block 消失了我将不得不复制大量代码并编写 compute<12>(data)模板。除了代码重复,compute(data, number)只是更好,更直观地使用。

有没有办法统一这两者?

编辑:这更多的是关于模板,或者如果你愿意的话,模板滥用,而不是关于编译器可以应用于这种情况的优化。

最佳答案

什么都不做。编译器足以优化一切。

关于c++ - 互换 func<7>(42) 和 func(42, 7) 模板参数语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19138057/

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