【发布时间】:2016-10-03 10:53:54
【问题描述】:
我试图找到一种简单的方法来检查作为模板参数传递的参数是否都是 2 的幂。我在网站上发现了一个 bithack,我有这个:
constexpr bool isPowerOf2(size_t value){
return !(value == 0) && !(value & (value - 1));
}
这适用于单个值,但将其应用于多个参数看起来很难看。
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");
如果我能让它看起来像 arePowersOf2(Arg1, Arg2, Arg3) 会更好,但我在模板魔法方面并不是很先进。所以我的问题是:有没有一种简单的方法可以做到这一点?我更喜欢 constexpr C++11 解决方案。
【问题讨论】:
-
你的函数不是模板,参数也不是模板实参。
-
你能用C++1z,比如here吗?
标签: templates c++11 constexpr variadic