にゃははー

はへらー

【修正済:r170532】GCC4.6.0 trunk C++0xモードのバグ

C++0xでconstexprが導入されましたがそれによってstatic constがconstant-expressionから外されたということで無ければバグです。
ちょっと今は時間無いので仕様読んで明日あたり更新します。

つまり以下のようなコードがエラーになってしまいます。

template < typename T, T N >
struct integral_constant
{
	static const T value = N;
	typedef integral_constant< T, value + 1 > next;
};
integral_constant< int, 0 > _zero;

static constがstatic constexprになっていれば問題ありません。

まぁ見ればわかるでしょうが、これによってBoost.MPLのintegral_cなどがコンパイルエラーになってしまいます。
今のところGCC4.6.0 20110221では問題ありませんが、20110226ではエラーになるのでこの間でのエンバグでしょう。
詳細を調べてまたBugzillaに上げます。まぁこれなら誰かがすぐに修正するでしょうが。

2/28 r170532で修正されました