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