#include <boost/integer/static_log2.hpp>
int main()
{
// a = 7 (∵2の7乗 == 128)
const int a = boost::static_log2<128>::value;
// b = 15 (∵2の15乗 == 32768, 2の16乗 == 65536)
const int b = boost::static_log2<60000>::value;
// コンパイルエラー
const int c = boost::static_log2<0>::value;
return 0;
}
そんな複雑には見えないんですが、結構コンパイラを選ぶテンプレートなようです。 VC++とBCCではうまく動かず。