C++ Logo

STD-PROPOSALS

Advanced search

Subject: Re: [std-proposals] Make 'this' a reference
From: Marian Darius (marian.darius98_at_[hidden])
Date: 2020-03-05 07:54:50


Indeed, it seems like the scope of workarounds required would
be too high for it to be worth it. Any contextual keyword that could
be used for this would be too long / complex (can't use self, would
have to be something like `self_ref` or `this_ref`), at which point it
becomes useless.

It seems to me like p0847 is the way to go.

Darius

On Thu, 5 Mar 2020 at 11:53, Gašper Ažman via Std-Proposals <
std-proposals_at_[hidden]> wrote:

> You can have the behaviour when deducing this (p0847) lands.
>
> On Thu, Mar 5, 2020 at 9:28 AM Andrey Semashev via Std-Proposals <
> std-proposals_at_[hidden]> wrote:
>
>> On 2020-03-05 11:59, Jake Arkinstall via Std-Proposals wrote:
>> > I'd choose a different new keyword rather than add a new rule on 'this'
>> > which is bound to have some confusing edge cases (especially when
>> > passing this to template functions - does it resolve as a pointer? A
>> > reference? A special object that tries to behave as both?).
>> >
>> > I'd personally go with self *≡* *this, such that self.member =
>> this->member.
>>
>> The problem is that `self` is already used in code base. Ironically,
>> often to emulate `this` (e.g. in a proxy class that refers to the real
>> object with a `self` data member).
>>
>> > On Thu, 5 Mar 2020, 08:50 Marian Darius via Std-Proposals,
>> > <std-proposals_at_[hidden] <mailto:std-proposals_at_[hidden]>>
>>
>> > wrote:
>> >
>> > It feels weird that inside a class the keyword 'this' is a pointer
>> > to the current object, when it has reference semantics:
>> > - it is not re-assignable
>> > - it is not null (as not null as a reference can be)
>> >
>> > It seems a natural fit for 'this' to be a reference, making the
>> > meaning of '&&', 'const&&' and 'const&' qualified methods
>> > a little more intuitive (that becomes the type of 'this' in that
>> > method).
>> >
>> > The biggest problem with changing 'this' to a reference is
>> > backwards-compatibility. But we already have a feature in
>> > this language that we can look at to solve this issue: function
>> > references convert to function pointers back-and-forth implicitly.
>> > Here is a simple example: https://compiler-explorer.com/z/EdVLD4
>> >
>> > So we could make 'this' a similar style of reference that implicitly
>> > converts to a pointer when needed (for example, when using '->'
>> > operator or passing to a function taking a pointer).
>> >
>> > Disclaimer: I am not an expert, and this is not a well thought-out
>> > proposal. I just want some feedback on the idea and on whether I
>> > should maybe write a formal proposal for it.
>> >
>> > Is this something that interests people? It feels like it might make
>> > the language easier to use and understand, especially to beginners.
>> >
>> > Was this proposed before? If so, what happened to that proposal?
>> > Is there something hopelessly broken that I didn't think of that can
>> > make this unfeasible?
>> >
>> > Darius
>> > --
>> > Std-Proposals mailing list
>> > Std-Proposals_at_[hidden] <mailto:
>> Std-Proposals_at_[hidden]>
>> > https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>> >
>> >
>>
>> --
>> Std-Proposals mailing list
>> Std-Proposals_at_[hidden]
>> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>



STD-PROPOSALS list run by herb.sutter at gmail.com

Standard Proposals Archives on Google Groups