相关疑难解决方法(0)

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

有没有返回RValue Reference(&&)有用的情况?

函数应该返回RValue Reference是否有原因?技巧,技巧,或成语或模式?

MyClass&& func( ... );
Run Code Online (Sandbox Code Playgroud)

我知道一般返回引用的危险,但有时我们会这样做,不管我们(T& T::operator=(T)只是一个惯用的例子).但是怎么样T&& func(...)?我们会从中获得这样的一般场所吗?与仅仅客户端代码相比,当编写库或API代码时,可能会有所不同?

c++ rvalue-reference move-semantics c++11

73
推荐指数
3
解决办法
1万
查看次数

重载R值引用和代码重复

考虑以下:

struct vec
{
    int v[3];

    vec() : v() {};
    vec(int x, int y, int z) : v{x,y,z} {};
    vec(const vec& that) = default;
    vec& operator=(const vec& that) = default;
    ~vec() = default;

    vec& operator+=(const vec& that)
    {
        v[0] += that.v[0];
        v[1] += that.v[1];
        v[2] += that.v[2];
        return *this;
    }
};

vec operator+(const vec& lhs, const vec& rhs)
{
    return vec(lhs.v[0] + rhs.v[0], lhs.v[1] + rhs.v[1], lhs.v[2] + rhs.v[2]);
}
vec&& operator+(vec&& lhs, const vec& rhs)
{
    return move(lhs += …
Run Code Online (Sandbox Code Playgroud)

c++ rvalue-reference c++11

15
推荐指数
3
解决办法
4757
查看次数

返回值还是右值参考?

在Scott Meyer的新书中,他提出了rvalue引用限定符的示例用法,如下所示:

class Widget {
private:
    DataType values;

public:
    DataType& data() &  { return values; } 
    DataType  data() && { return std::move(values); } // why DataType?
};
Run Code Online (Sandbox Code Playgroud)

以便:

auto values = makeWidget().data();
Run Code Online (Sandbox Code Playgroud)

移动构造values而不是复制构造它.

为什么rvalue-ref-qualified data()返回DataType而不是DataType&&?在这种情况下auto仍会推断DataType(虽然decltype(auto)不会 - 但这不是唯一的理由,更喜欢返回一个值而不是ravlue ref).这个高度投票的答案会返回一个rvalue ref,这对我来说在概念上更有意义.

c++ rvalue-reference c++11

12
推荐指数
1
解决办法
2415
查看次数

标签 统计

c++ ×4

c++11 ×4

rvalue-reference ×4

move-semantics ×1