On 26/04/11 2:11 PM, Alexander wrote:
On 26.04.2011 13:59, Steven Schveighoffer wrote:

Currently, casting an array to a pointer is a special case of casting in the 
compiler, which basically returns arr.ptr.  However, that functionality is 
already available via arr.ptr.

   To me (coming from C/C++) it looks more natural to cast instead if using 
arr.ptr. After all, array is a pointer (=reference), and arrays are not structs 
(=values), so I see no reason to disallow this, to be honest.

   And, indeed, once disallowed, it will break a lot of existing code...

/Alexander

This is wrong on two levels:

1. In D, an array is not a pointer. It is a struct with two members: a length and a pointer. It is not the same as C or C++ array.

2. Even in C++, an array is not a pointer. The type of an array in C++ is T[N] whereas a pointer is T*. The only reasons you can pass an array into a function that accepts a pointer is because of an implicit conversion. Arrays are implemented as pointers, but they are not the same type.

Reply via email to