2013-06-30 3 views
0

매트릭스 클래스를 프로그래밍하는 동안 흥미롭고 귀찮은 뭔가가 발생했습니다 : 내부 컴파일러 오류. Matrix4<T>::Matrix4(Matrix4<T>&&)이라는 클래스의 자매 생성자를 기꺼이 호출하려고했습니다. 이이 오류를 생성 코드의 조각 :C++ - 내부 컴파일러 오류로 수행 할 수있는 작업은 무엇입니까?

template<typename T> 
Matrix4(Matrix4&& matrix_) = default; 

template<typename T> 
Matrix4<T>::Matrix4(T (&&matrix_)[4][4]): 
    Matrix4({ 
     .data = { 
      {matrix_[0][0], matrix_[0][1], matrix_[0][2], matrix_[0][3]}, 
      {matrix_[1][0], matrix_[1][1], matrix_[1][2], matrix_[1][3]}, 
      {matrix_[2][0], matrix_[2][1], matrix_[2][2], matrix_[2][3]}, 
      {matrix_[3][0], matrix_[3][1], matrix_[3][2], matrix_[3][3]} 
     } 
    }) 
{ 

} 

을 그리고, 이것은 내부 컴파일러 오류입니다 (컴파일러는 GCC이고 IDE 코드 :: 블록입니다) :

internal compiler error: in process_init_constructor_array, at cp/typeck2.c:1080

추측 컨대 컴파일러가 내 코드를 성공적으로 파싱 할 수 없습니다. 그래도 구문이 괜찮은지 확신합니다. 이 상황에서 나는 무엇을 할 수 있습니까?

+4

버그 신고를 제출할 수 있습니다. – jrok

+0

@jrok : 나는 이것에 아주 새로운 것이다. 어떻게해야합니까? – Helixirr

+2

[http://gcc.gnu.org/bugs/](hcc://gcc.gnu.org/bugs/). 버그 리포트에 관해서는 이미보고되거나 고쳐지지 않았는지, 당신의 코드가 실제로 정확한지 확인하십시오. – jrok

답변

2

다른 컴파일러로 컴파일 해보십시오. 코드에 매우 미묘한 오류가있을 수 있으며 다른 컴파일러에서 더 많이 알려줄 수 있습니다. 나는 을 가지고 널리 선전되어 왔기 때문에 Clang을 시도하는 것이 좋습니다. GCC의 최신 버전이이 개념을 바꾸려고합니다.

실제 오류 메시지가 표시되지 않은 상태에서 두 컴파일러에서 모두 실패하는 경우이 버그에 대한 최상의 테스트 코드가 있으며 버그 보고서를 제출하면 컴파일러 커뮤니티에서 크게 감사 할 것입니다.

+0

GCC Bugzilla에서이 버그에 대해보고되었습니다. 관심이 있으시면 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57769 – Helixirr

+0

여기에서이 특정 버그를 찾으실 수 있습니다. Clang에서 사용해 보셨습니까? 편집 : 그냥 버그 보고서를 읽고, GCC 버전 특정 오류 것 같습니다. – coder543

관련 문제