Is this a bug?

Steven Schveighoffer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Apr 28 07:02:32 PDT 2014


On Mon, 28 Apr 2014 06:04:53 -0400, John Colvin  
<john.loughran.colvin at gmail.com> wrote:

> 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.

You don't need them. (*b.f)[4] works. '.' has precedence over '*'.

-Steve


More information about the Digitalmars-d-learn mailing list