Я нашел этот пост, когда я пытаюсь понять, что такое значения xvalue
, glvalue
и prvalue
.
Я также интуитивно думаю, что под капотом this
передается функции-члену, например:
void SomeClass::func(SomeClass* this, int a, int b)
, как указано в ответе и стандарте , this
должно быть prvalue
, поэтому мое предположение было неверным.
Я пытался имитировать c this
как prvalue
template<typename T>
T* possible_this_impl() {
T* ref { nullptr };
// Somehow retrieve the currently referred object
return ref;
}
struct foo {
int a_non_static_member_function() {
possible_this_impl<foo>(); // Now it is a prvalue
possible_this_impl<foo>()->x;
possible_this_impl<foo>()->y;
}
public:
int x {};
int y {};
};
int main()
{
foo f;
f.a_non_static_member_function();
}
Но на самом деле мне интересно, что Возможна ли реализация this
? Может ли кто-нибудь просветить меня?
Примечание: Не нужно очень глубокое объяснение, но может быть достаточно простого объяснения.