nul*_*ptr 0 c++ templates c++23
与 cv 限定不同,ref 限定不会更改指针的属性
this:在右值 ref 限定函数内,*this仍然是左值表达式。
那么,我们如何获得 的 ref-qualifier *this,或者如何转发*this,以避免重复使用不同的 ref-qualifier 实现相同的成员函数呢?
在 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)