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