typedef behavior
Alex
sascha.orlov at gmail.com
Sun Feb 11 19:33:23 UTC 2018
On Sunday, 11 February 2018 at 15:18:11 UTC, Simen Kjærås wrote:
>
> Basically, Typedef looks like this:
>
> struct Typedef(T) {
> T _payload;
> // Forward method calls, member access, etc, to _payload.
> }
>
> If T looks like this:
>
> struct T {
> static int[3] arr;
> void foo() { arr[0]++; }
> }
>
> How is Typedef supposed to wrap T.foo in such a way that it
> uses a different arr depending on whether it's called from the
> Typedef or from T?
>
> --
> Simen
In the same way as it is handled by this:
/// --- code --- ///
void main(){}
static assert(T.arr.ptr != S.arr.ptr);
struct T {
static int[3] arr;
void foo() { arr[0]++; }
}
struct S {
static int[3] arr;
void foo() { arr[0]++; }
}
/// --- code ends --- ///
I understand that Typedef should be kept simple. But if it
defines a type which is recognized as another type in respect to
the underlying one, then I should be able to rely on independence
of everything, like I would copy/paste the implementation. Or do
I misinterpret something?
More information about the Digitalmars-d-learn
mailing list