boost::static_log2

トップページ > 整数と数値型 >

abstract

必要なヘッダ
<boost/integer/static_log2.hpp>
出来ること
コンパイル時に log2(定数) を取得
リファレンス
en

sample

#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;
}

etc

そんな複雑には見えないんですが、結構コンパイラを選ぶテンプレートなようです。 VC++とBCCではうまく動かず。

presented by k.inaba (kiki .a.t. kmonos.net) under CC0