2013-06-30 29 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/](http://gcc.gnu.org/bugs/)。至於任何錯誤報告,請確保它尚未被報告或修復,並且您的代碼確實是正確的。 – jrok

回答

2

嘗試使用不同的編譯器編譯它。您的代碼可能存在一個非常微妙的錯誤,而另一個編譯器可能會告訴您更多。我推薦嘗試Clang,因爲它已被廣泛吹捧爲better error messages,儘管最新版本的GCC正在試圖改變這個概念。

如果兩個編譯器在沒有看到真正的錯誤信息的情況下都失敗了,那麼你有一些最好的測試代碼供你使用,並且提交一個關於它的錯誤報告將非常感謝編譯器社區。

+0

報告了關於GCC Bugzilla上的這個錯誤。如果你有興趣,你可以在這裏找到這個特定的錯誤:http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57769 – Helixirr

+0

你在Clang嘗試過嗎?編輯:只讀bug報告,看起來像是GCC中的版本特定錯誤。 – coder543