Возможная реализация this в C ++ - PullRequest
0 голосов
/ 21 февраля 2020

Я нашел этот пост, когда я пытаюсь понять, что такое значения 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? Может ли кто-нибудь просветить меня?

Примечание: Не нужно очень глубокое объяснение, но может быть достаточно простого объяснения.

...