Đây là mãbiên dịch nội bộ lỗi: lỗi phân khúc với 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
cho
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.
Trông giống như một lỗi với tôi bằng g ++ 4.3.5, g ++ 4.4 và cao hơn không đưa ra bất kỳ phân đoạn nào như vậy.
Các bạn nghĩ sao? Có điều gì sai với mã không?
Lỗi trình biên dịch nội bộ luôn là lỗi. Nếu có điều gì đó sai với mã trình biên dịch sẽ tạo ra một thông báo lỗi thực sự, không phải lỗi. –
Có vẻ ổn với tôi. Tôi có lẽ đã cố gắng đơn giản hóa lớp bên trong thành 'class B {public: B (fptr); }; '. Các typedef sẽ được hiển thị ở đó. –
Thật thú vị, nếu tôi viết 'typename A < X, L> :: fptr' trong định nghĩa * *, nó biên dịch tốt: http://ideone.com/0OOpn – Nawaz