Thread overview
alias this and initialisation
May 25, 2020
Danni Coy
May 25, 2020
Ali Çehreli
May 25, 2020
Adam D. Ruppe
May 25, 2020
lalit.singhh
May 25, 2020
can anybody tell me why

struct S
{
    int x;
    alias x this;
}

void test()
{
    S s;
    s = 8; // this works
    S s = 8 // but this does not?
}
May 25, 2020
On 5/24/20 6:35 PM, Danni Coy wrote:> can anybody tell me why
>
> struct S
> {
>      int x;
>      alias x this;
> }
>
> void test()
> {
>      S s;
>      s = 8; // this works
>      S s = 8 // but this does not?
> }

alias this is for implicit conversion, which requires an object to convert from. The second case above is about constructing an object.

That's probably why it works that way.

Ali

May 25, 2020
On Monday, 25 May 2020 at 01:35:47 UTC, Danni Coy wrote:
>     s = 8; // this works
>     S s = 8 // but this does not?
> }

alias this only applies if you already have an object. Construction is too soon.

You can add a constructor to make that work though.
May 25, 2020
On Monday, 25 May 2020 at 01:35:47 UTC, Danni Coy wrote:
> can anybody tell me why
>
> struct S
> {
>     int x;
>     alias x this;
> }
>
> void test()
> {
>     S s;
>     s = 8; // this works
>     S s = 8 // but this does not?
> }