On Wednesday, 10 July 2013 at 18:22:24 UTC, Ali Çehreli wrote:
And to be pedantic, length comes first:

struct Array (T)
{
    size_t length;
    T* ptr;
}

Which is actually property-like because assigning to length does pretty complex stuff. So the member cannot be named as 'length':

struct Array (T)
{
    size_t length_;
    T* ptr;
}

Anyway... :)

Ali

To be pedantic dynamic arrays are implemented in D simply as

struct Array
{
    size_t length;
    void* ptr;
}

and there is no type parametrization since such arrays handling is opaque for users (in druntime they are treated as void[]). Parametrization can be useful in user side since performing any operations with structure above (void*) will lead to errors. But in user side there is no point in manipulating the structure directly, as it can be done using usual properties/druntime without template bloat. By the way, the style ABI page is written, allows implementation to have more fields.

Reply via email to