GCC4.6.0のinternal compiler error
ついにconstant expressionがサポートされたGCCですが、一連の更新で多くのバグが混入しているようです。
ということで発見したもの例によってGCCのバグレポは見てないし、書いてないので既出かも。
P-stade.Ovenを使ってたら発見。今回はどうしたらいいんだろ...
今回はinternal compiler errorということで結構深刻?
struct hoge { int fuga; }; template < typename > void piyo( void ) { &hoge::fuga; }
template + complete typeのメンバへのポインタがミソっぽいです。templateを外しても、struct hogeをpiyoの内部で定義しても通ります。
これが該当するのはpstade/radish/safe_bool.hppです。
pstade/oven/make_range.hppとかpsade/oven/iter_range.hppあたりからインクルードされてるのでいろいろ使えなくなってます。
大学の課題に使ってるから困る...
2010/11/24 追記
workaroundを発見
ワンクッションおけばいいみたい。
struct hoge { int fuga; }; inline int hoge::* get_mem_ptr( void ) { return &hoge::fuga; } template < typename > void piyo( void ) { get_mem_ptr(); }