On Monday, 18 April 2016 at 02:42:15 UTC, Nicholas Wilson wrote:
On Monday, 18 April 2016 at 02:12:24 UTC, Tofu Ninja wrote:
Just out of curiosity, what is the point of the following?

struct a{
        struct{
                int x;
                int y;
                int z;
        }
}

As far as I can tell, the anonymous structure does nothing. How is it different from

struct a{

        int x;
        int y;
        int z;
}


IIRC D doesn't allow anonymous structures.



It does, it compiles...
Accessing x,y,z on the first one with the anonymous struct is the same as accessing it on the second without the anonymous struct... Seems to make no difference that it is there, which is why I am asking.

Also is there a way to have a named substructure, not a nested structure but something to just add an additional name, maybe something like
struct a{
        struct{
                int x;
                int y;
                int z;
        } b;
}

Try adding static:
struct a
{
    static struct b
    {
    }
}

Does not seem to be what I mean, a static nested struct is just a nested struct without access to the enclosing structure's members. What I meant was a struct to just add a namespace of sorts to the struct so that the substructure members would have to be accessed with a longer more qualified name. Something like

struct a{
     int x;
     sub_struct b{
           int y;
     }
}

a v;
v.x = 3;
v.b.y = 7;
// v.y = 7; // does not work

Reply via email to