C++23是否破坏unmove?该变更为有意设计还是会发布DR?
C++23隐式移动变更对unmove实现的影响及疑问
C++23中对隐式移动(implicit move)的标准措辞进行了变更,核心修改内容为:
符合移动条件的返回id表达式始终是xvalue
这一变更破坏了一种常用但并不恰当的unmove实现,代码如下:
template<typename T>auto unmove(T&& v) -> std::remove_reference_t<T>& { return v; }
目前各主流编译器对该变更的实现表现一致。请问:该破坏性变更是有意设计的吗?还是我们可以提交缺陷报告(DR)来修正这个问题?
内容的提问来源于stack exchange,提问作者sp2danny
相关产品推荐
相关产品推荐

