小编Koz*_*mar的帖子

clang 中奇怪的右值引用

下面的代码:

#include <iostream>

struct A {
  A() { std::cout << "()" << std::endl; }  
  A(A&&) { std::cout << "(A&&)" << std::endl; }  
  A(const A&) { std::cout << "(const A&)" << std::endl; }  
};

A fun (A&& a){
  return a;
}

int main(){
  A a;
  fun(std::move(a));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

在 clang 16.0.3 (arm64-apple-darwin22.4.0 和 c++17) 中产生

()
(A&&)
Run Code Online (Sandbox Code Playgroud)

虽然大多数编译器给出

()
(const A&)
Run Code Online (Sandbox Code Playgroud)

哪一个是正确的?

c++ clang rvalue-reference move-semantics c++17

6
推荐指数
1
解决办法
134
查看次数

标签 统计

c++ ×1

c++17 ×1

clang ×1

move-semantics ×1

rvalue-reference ×1