C ++ - 内部编译器错误可以做些什么?

时间:2013-06-30 15:07:41

标签: c++ gcc compiler-construction internal

我在编写矩阵类时遇到了一些有趣且烦人的问题:内部编译器错误。我愿意在名为Matrix4<T>::Matrix4(Matrix4<T>&&)的类中调用姐妹构造函数。这是生成此错误的代码段:

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是Code :: Blocks ):

  

内部编译器错误:在process_init_constructor_array中,at   CP / typeck2.c:1080

据说编译器无法成功解析我的代码。不过,我很确定语法没问题。在这种情况下我该怎么办?

1 个答案:

答案 0 :(得分:3)

尝试使用其他编译器进行编译。您的代码可能存在非常微妙的错误,而另一个编译器可能会告诉您更多信息。我建议尝试Clang,因为它已被广泛吹捧为better error messages,尽管最新版本的GCC正在寻求改变这一观念。

如果两个编译器都没有看到真正的错误消息就失败了,那么你可以使用一些最好的测试代码来处理这个bug,提交一个关于它的bug报告将会得到编译器社区的赞赏。< / p>