0

我在编写矩阵类时遇到了一些有趣且烦人的事情:内部编译器错误。我愿意在名为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 中,位于 cp/typeck2.c:1080

假设编译器无法成功解析我的代码。不过,我很确定语法没问题。在这种情况下我能做什么?

4

1 回答 1

3

尝试用不同的编译器编译它。您的代码可能存在非常细微的错误,而另一个编译器可能会告诉您更多信息。我建议尝试Clang,因为它被广泛吹捧为具有更好的错误消息,尽管最新版本的 GCC 正在寻求改变这个概念。

如果它在两个编译器上都失败而没有看到真正的错误消息,那么您可以使用一些针对此错误的最好的测试代码,并且编译器社区将非常感谢您提交有关它的错误报告。

于 2013-06-30T19:26:58.173 回答