Who's using structs nested in functions?

Fawzi Mohamed fmohamed at mac.com
Fri Oct 23 03:13:50 PDT 2009


On 2009-10-23 12:11:20 +0200, Fawzi Mohamed <fmohamed at mac.com> said:

> On 2009-10-22 18:11:01 +0200, Andrei Alexandrescu 
> <SeeWebsiteForEmail at erdani.org> said:
> 
>> Fawzi Mohamed wrote:
>>> On 2009-10-22 16:33:01 +0200, Jeremie Pelletier <jeremiep at gmail.com> said:
>>> 
>>>> bearophile wrote:
>>>>> Andrei Alexandrescu:
>>>>> 
>>>>>> With nested structs, however, you can't do much. You can pass them to a 
>>>>>> template, but I can't see some solid use cases there. My understanding 
>>>>>> is that nested structs have been implemented for completeness and 
>>>>>> consistency with nested classes.
>>>>>> Any good example of nested struct uses?
>>>>> 
>>>>> I have used nested static structs sometimes, when I need a struct just 
>>>>> inside a function (like the main()) to avoid polluting the outer scope 
>>>>> with the struct name.
>>>>> 
>>>>> Do you want to remove them from D2?
>>>>> 
>>>>> Bye,
>>>>> bearophile
>>>> 
>>>> I've had similar uses, some win32 api routines require custom structs 
>>>> like BITMAPINFO, nested structs are neat to declare the struct right 
>>>> before its only usage.
>>>> 
>>>> However I don't think having a closure for that struct is really 
>>>> needed, nested functions already perform that task very well, and I use 
>>>> those quite often.
>>>> 
>>>> Jeremie
>>> 
>>> I use structs in nested functions as context for parallel recursive 
>>> loops, actually my code would be nicer if circular referring structs 
>>> would be allowed in nested functions (at the moment this is not 
>>> possible, even with forward references).
>>> 
>>> Fawzi
>>> 
>> 
>> Could you prepend "static" in front of their definition and still have 
>> them work?
>> 
>> Andrei
> 
> Sure, I thought nested structures were always static, and did not have 
> access to the context, as classes do.
> 
> Fawzi

Ok I see that indeed in D2.0 struct have a pointer to the context, no I 
don't use that.

Fawzi




More information about the Digitalmars-d mailing list