classes inside functions?!
Don Clugston
dac at nospam.com.au
Tue May 2 01:43:52 PDT 2006
Sean Kelly wrote:
> 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.
There's some weird stuff in there. Mixins can be local, and because of
alias template parameters, there's a name mangling for templates which
are defined local to functions.
More information about the Digitalmars-d
mailing list