C++23提供了通过auto(x)的形式进行拷贝,复制出一个右值的方式:
#include <string>
#include <iostream>
using namespace std;
class A{
public:
A()
{
cout<<"construct addr:"<<this<<endl;
}
A(const A& a)
{
cout<<"copy construct addr:"<<this<<endl;
}
A(A&& a)
{
cout<<"move construct addr:"<<this<<endl;
}
};
void f(const A& a)
{
cout<<"f with A& addr:"<<&a<<endl;
}
void f(A&& a)
{
cout<<"f with A&& addr:"<<&a<<endl;
}
int main()
{
A a;
f(a);
cout<<endl;
f(auto(a));
cout<<endl;
f(A(a));
return 0;
}