classes inside functions?!
Sean Kelly
sean at f4.ca
Mon May 1 10:26:24 PDT 2006
Bruno Medeiros wrote:
> Sean Kelly wrote:
>> Hasan Aljudy wrote:
>>> I don't know if this is a bug or what, but for some reason, dmd
>>> allows you to define classes/structs/unions/enums as statements
>>> inside function bodies.
>>> Oddly enough, you cannot define a template in the same way
>>>
>>> I didn't find in the docs any mention of whether aggregates are
>>> allowed inside function bodies or not.
>>>
>>> Walter, is this the correct behaviour?
>>
>> It is. Templates are merely a special case as they must have external
>> linkage.
>
> What do you mean by that? What is external linkage? Did you meant an
> extern(al) storage class? (I just found out now something I unknew, that
> are two distinct "extern" keywords/concepts in D)
> And how exactly does that restricts templates not being allowed inside
> functions?
External linkage means that a symbol is visible from another module.
But I mis-spoke. Template parameters must have external linkage.
Templates themselves may only be defined at module or class scope. This
is a carryover from C++, and I'm not certain whether there's a technical
obstacle to function-scope templates or not. There doesn't seem to be,
but then I've never implemented template support in a compiler before.
Perhaps Walter could explain further.
Sean
More information about the Digitalmars-d
mailing list