とセグメンテーションフォールトは、コード内部コンパイルエラー:G ++ここでは4.3.5
//fail_.cpp
template< unsigned char X, class L>
class A {
public:
typedef void (A::*fptr)();
class B {
public: B(typename A< X, L> ::fptr);
};
};
template < unsigned char X, typename L >
A<X,L>::B::B (fptr) { }
g++ -c fail_.cpp
が
fail_.cpp:11: internal compiler error: Segmentation fault
Please submit a full bug report, with preprocessed source if appropriate.
See < file:///usr/share/doc/gcc-4.3/README.Bugs > for instructions.
をg ++ 4.3.5で私にはバグのように見える与え
ですg ++ 4.4以降では、このようなセグメンテーションが発生しません。あなたはどう思いますか?コード自体に何か問題はありますか?
内部コンパイラエラーは常にバグです。コードに何らかの問題がある場合、コンパイラは実際のエラーメッセージを生成し、クラッシュしません。 –
私によく見えます。おそらく内部クラスを 'class B {public:B(fptr);}に単純化しようとしたでしょう。 }; '。 typedefをそこに表示する必要があります。 –
興味深いことに、 'typename A < X, L> :: fptr'を*定義*に書くと面白いです:http://ideone.com/0OOpn – Nawaz