我在编写矩阵类时遇到了一些有趣且烦人的事情:内部编译器错误。我愿意在名为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
假设编译器无法成功解析我的代码。不过,我很确定语法没问题。在这种情况下我能做什么?