我们如何转发*这个?

nul*_*ptr 0 c++ templates c++23

正如cppreference 所说

与 cv 限定不同,ref 限定不会更改指针的属性this:在右值 ref 限定函数内,*this仍然是左值表达式。

那么,我们如何获得 的 ref-qualifier *this,或者如何转发*this,以避免重复使用不同的 ref-qualifier 实现相同的成员函数呢?

Bar*_*rry 6

在 C++23 中,您可以使用推导此语言功能将对象参数声明为第一类函数参数:

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

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

struct C {
    template <typename Self>
    void f(this Self&& self);
};
Run Code Online (Sandbox Code Playgroud)