【发布时间】:2016-05-20 14:22:14
【问题描述】:
我有一些来自与我不同的库的正常量值,称之为the_val。现在,我希望 log_of_the_val 成为 floor(log_2(the_val)) - 不是用 C++ 代码说话 - 当然,我希望这发生在编译时。
现在,有了 gcc,我可以做类似的事情
decltype(the_val) log_of_the_val = sizeof(the_val) * CHAR_BIT - __builtin_clz(the_val) - 1;
我认为这应该可行(长度 - 标题零的数量)。否则,我可以自己为它实现一个 constexpr 函数,但我敢打赌,我可以在编译时使用其他的、更简单、更便携的东西。 ...问题是,那会是什么?
【问题讨论】:
标签: c++11 constants constexpr logarithm idioms