2013年4月4日 (木曜日)

07:01:12 # Life constexpr. コンパイル時に評価が終わっているといえばテンプレートメタプログラミングですが、 c++11ではconstexprというのがくわわってます。 とりあえず素数を計算してみました。手元のg++ 4.7.2のデフォルトでは 512回までしか再帰できないようになっているようです。 テンプレートの展開は900回までいけるようになっているのでそちらのほうが自由度が高いかも? constexpr関数というのがあるので、static constexprのおかげでtemplateクラスでenumを使わなくなってすんだ以上に素敵なことができます。 試行錯誤しているとこんなエラーが出る。 テンプレート版は200を超えたあたりで終わらなくなるんだけどひょっとして僕のコードがひどいのか。 mpl::stringとかあるのを発見してこいつらひどい。

prime_constexpr_function.cc:21:3: error: constexpr evaluation depth exceeds maximum of 512 (use -fconstexpr-depth= to increase the maximum)
prime.cc:18:58: error: template instantiation depth exceeds maximum of 900 (use -ftemplate-depth= to increase the maximum) instantiating ‘struct is_divisible<891, 2>'
	
Junichi Uekawa

$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $