正如cppreference所说:与cv-qualification不同,ref-qualification不会改变this指针的属性:在右值引用限定函数中,*this仍然是左值表达式。那么,我们如何才能获得*this的ref限定符,或者我们如何才能转发*this,以避免重复实现具有不同ref限定符的相同成员函数?
this
*this
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); };
1条答案
按热度按时间kmynzznz1#
在C++23中,可以使用deducing this特性将对象参数声明为第一类函数参数:
这让你可以推断出它的类型,从而转发它,就像任何其他函数参数是转发引用一样: