C++ Logo

std-proposals

Advanced search

Re: Make 'this' a reference

From: Marian Darius <marian.darius98_at_[hidden]>
Date: Thu, 5 Mar 2020 15:54:50 +0200
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
>

Received on 2020-03-05 07:57:47