c++ 我们如何转发 * 这个?

sczxawaw  于 2023-04-08  发布在  其他
关注(0)|答案(1)|浏览(85)

正如cppreference所说:
与cv-qualification不同,ref-qualification不会改变this指针的属性:在右值引用限定函数中,*this仍然是左值表达式。
那么,我们如何才能获得*this的ref限定符,或者我们如何才能转发*this,以避免重复实现具有不同ref限定符的相同成员函数?

kmynzznz

kmynzznz1#

在C++23中,可以使用deducing this特性将对象参数声明为第一类函数参数:

struct C {
    // roughly equivalent to today's:
    //    void f() const&
    void f(this C const& self);
};

这让你可以推断出它的类型,从而转发它,就像任何其他函数参数是转发引用一样:

struct C {
    template <typename Self>
    void f(this Self&& self);
};

相关问题