小编Tom*_*omW的帖子

C++ - 检查所有模板参数是否为2的幂

我试图找到一种简单的方法来检查作为模板参数传递的参数是否都是2的幂.我在网站上找到了一个bithack,我有这个:

constexpr bool isPowerOf2(size_t value){
return !(value == 0) && !(value & (value - 1));
}
Run Code Online (Sandbox Code Playgroud)

这适用于单个值,但将此应用于多个参数看起来很难看.

static_assert(isPowerOf2(Arg1), "Argument must be a power of 2");
static_assert(isPowerOf2(Arg2), "Argument must be a power of 2");
static_assert(isPowerOf2(Arg3), "Argument must be a power of 2");
Run Code Online (Sandbox Code Playgroud)

如果我能让它看起来像arePowersOf2(Arg1,Arg2,Arg3)会更好,但是我并不是真的在模板魔术方面先进.所以我的问题是:有一种简单的方法吗?我更喜欢constexpr C++ 11解决方案.

templates variadic constexpr c++11

3
推荐指数
1
解决办法
390
查看次数

标签 统计

c++11 ×1

constexpr ×1

templates ×1

variadic ×1