我在编写矩阵类时遇到了一些有趣且烦人的问题:内部编译器错误。我愿意在名为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
据说编译器无法成功解析我的代码。不过,我很确定语法没问题。在这种情况下我该怎么办?
答案 0 :(得分:3)
尝试使用其他编译器进行编译。您的代码可能存在非常微妙的错误,而另一个编译器可能会告诉您更多信息。我建议尝试Clang,因为它已被广泛吹捧为better error messages,尽管最新版本的GCC正在寻求改变这一观念。
如果两个编译器都没有看到真正的错误消息就失败了,那么你可以使用一些最好的测试代码来处理这个bug,提交一个关于它的bug报告将会得到编译器社区的赞赏。< / p>