Is this a bug?

John Colvin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Apr 28 03:04:53 PDT 2014


On Monday, 28 April 2014 at 09:36:08 UTC, Andrey wrote:
>> not a bug.
>>
>> b.f[10] is indexing the pointer to the array, not the array 
>> itself.
>>
>> b.f[0][10] is indexing the array (with the 10), but I would 
>> argue it is better to write *(b.f)[10] so as to be clear that 
>> f is not an array.
>
> thank you, John.
>
> compiler said that '*(b.f)[10]' is deprecated, and I should 
> write like this
>
> void foo()
> {
>    Type3 b;
>    Type1  d;
>    d = *(b.f[10]).ptr;
> }

struct T
{
	int[10]* f;
}

void main()
{
	int[10] test;
	T t = T(&test);
	T* b = &t;
	
	auto d = (*(b.f))[4]; //ugly but clear.
	d = b.f[0][4]; //prettier but less clear.
}

note the extra brackets on the ugly one, I forgot them before.


More information about the Digitalmars-d-learn mailing list