为演员操作符使用移动语义

P45*_*ent 8 c++

假设我有两个类foo,bar它们相关性很好,我的意思是它们包含公共数据成员.

operator bar() const;foo课堂上有一个演员.

我也有一个功能func,需要一个bar.

如果我func使用匿名临时调用,则将调用foo强制转换运算符.但是,由于我不需要foo,我可以声明某种移动,以便明确地优化任何不必要的副本吗?

Rei*_*ica 12

如果编译器支持成员函数的ref-qualifiers(C++ 11特性),您可以:

operator bar() const &
{
  return bar(the_common_data);
}

operator bar() &&
{
  return bar(std::move(the_common_data));
}
Run Code Online (Sandbox Code Playgroud)

[实例]