GCC 14更新后,operator= 对只读成员赋值报错的问题咨询
GCC 14更新后,operator= 对只读成员赋值报错的问题咨询
大家好,我最近碰到一个编译报错的问题,想请各位帮忙分析下原因。我正在使用一个仅头文件的光线追踪库NanoRT,其中有个TriangleSAHPred类,它包含以下成员变量:
mutable int axis_; mutable T pos_; const T* vertices_; const unsigned int* faces_; const size_t vertex_stride_bytes_;
这个类还重载了operator=,代码如下:
TriangleSAHPred<T>& operator=(const TriangleSAHPred<T>& rhs) { axis_ = rhs.axis_; pos_ = rhs.pos_; vertices_ = rhs.vertices_; faces_ = rhs.faces_; vertex_stride_bytes_ = rhs.vertex_stride_bytes_; return (*this); }
之前在旧版本的GCC里,这个赋值运算符重载运行得完全没问题,哪怕vertices_、faces_和vertex_stride_bytes_都是const修饰的成员。但升级到GCC 14之后,这段代码就编译不通过了,具体是vertex_stride_bytes_的赋值出了问题,另外两个const指针成员反而没有报错。我自己猜测这可能是因为前两个是指针类型,而vertex_stride_bytes_是size_t值类型的缘故,但不确定具体原因,也不知道该怎么修复这个问题,希望能得到大家的解答。
备注:内容来源于stack exchange,提问作者Tyler Shellberg
相关产品推荐
相关产品推荐

