C++ Logo

std-proposals

Advanced search

Re: Generic template 'this'

From: Gašper Ažman <gasper.azman_at_[hidden]>
Date: Sun, 8 Mar 2020 09:37:31 +0000
I meant that you should consider the incremental value of your proposal
over p0847, which is on track for c++23 unless serious issues crop up

On Sat, Mar 7, 2020, 19:04 Phil Bouchard <phil_at_[hidden]> wrote:

> The syntaxes are way different:
>
> http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2020/p0847r4.html
>
> In your case the compiler will have to change all of its rules for the
> number of parameters "operator" overloads. For example:
>
> struct A
>
> {
>
> int value;
>
> ...
>
> template <typename Self>
>
> bool operator < (this Self && self, A const & a) // 2
> parameters... ok
>
> {
>
> return self.value < a.value;
>
> }
>
>
> bool operator < (A const & a) // 1 parameter... ok
>
> {
>
> return value < a.value;
>
> }
>
> };
>
>
> --
>
> *Phil Bouchard*
> Founder
> C.: (819) 328-4743
>
> [image: Fornux Logo] <http://www.fornux.com>
>
>
> On 3/7/20 1:35 PM, Gašper Ažman wrote:
>
> P0847
>
> On Sat, Mar 7, 2020, 18:33 Phil Bouchard via Std-Proposals <
> std-proposals_at_[hidden]> wrote:
>
>> Alright, I'm pretty sure this is not implemented yet. Suppose you have:
>>
>> struct A
>>
>> {
>>
>> int value;
>>
>> ...
>>
>> template <typename T>
>>
>> int compare(T const & t) const;
>>
>> }
>>
>>
>> struct B
>>
>> {
>>
>> int value;
>>
>> ...
>>
>> template <typename T>
>>
>> int compare(T const & t) const;
>>
>> }
>>
>>
>> Then a generic way to define the same functionality for all classes would
>> be to have a "template 'this'":
>>
>> template <typename C, typename T>
>>
>> inline int C::compare(T const & t) const
>>
>> {
>>
>> return value == t.value ? 0 : value < t.value ? -1 : 1;
>>
>> }
>>
>>
>> (Please include my email address in your replies)
>>
>>
>> --
>>
>> *Phil Bouchard*
>> Founder
>> C.: (819) 328-4743
>>
>> [image: Fornux Logo] <http://www.fornux.com>
>> --
>> Std-Proposals mailing list
>> Std-Proposals_at_[hidden]
>> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>>
>

Received on 2020-03-08 04:40:33