Thread overview
Get the type of 'alias this ='
Apr 04, 2018
Vladimirs Nordholm
Apr 04, 2018
Vladimirs Nordholm
Apr 04, 2018
Simen Kjærås
Apr 04, 2018
Vladimirs Nordholm
April 04, 2018
Hello people from D-land.

Short question: Can get the type of a struct that has `alias this = <type>` ?

See this example, where a struct is aliased to an enum:


    enum Enum { one, two, three, fourtytwo }

    private template Mix()
    {
        this(Enum ee) { e = ee; }
        Enum e;
        alias this = e;
    }
    struct A { mixin Mix }
    struct B { mixin Mix }

    T foo(T) (T f) if (is(T == A) || is(T == B) || is(T == Enum))
    //               |------------------------------------------|
    //                         ^ I want to change this into something more nice looking
    {
        // ...
    }


I want to check the type in a more 'cleaner' way.

Best regards,
Vladimirs Nordholm
April 04, 2018
On Wednesday, 4 April 2018 at 15:49:31 UTC, Vladimirs Nordholm wrote:
>     private template Mix()
>     {
>         this(Enum ee) { e = ee; }
>         Enum e;
>         alias this = e;
>     }


Oops, typo in the alias. Should be `alias e this`
April 04, 2018
On Wednesday, 4 April 2018 at 15:49:31 UTC, Vladimirs Nordholm wrote:
> if (is(T == A) || is(T == B) || is(T == Enum))

if (is(T : Enum))

--
  Simen
April 04, 2018
On Wednesday, 4 April 2018 at 15:57:19 UTC, Simen Kjærås wrote:
> On Wednesday, 4 April 2018 at 15:49:31 UTC, Vladimirs Nordholm wrote:
>> if (is(T == A) || is(T == B) || is(T == Enum))
>
> if (is(T : Enum))
>
> --
>   Simen

Ah! Thanks a lot!