function-local template specialization error
Don
nospam at nospam.com
Wed Jul 14 13:29:34 PDT 2010
bearophile wrote:
> canalpay:
>> Thanks, But this example works:
>> void main()
>> {
>> T input(T)()
>> {}
>>
>> }
>>
>> Why ?
>
> You are right. Beside allowing nested functions (this is well known), it seems D2 also accepts the definition (with template constraint too) and instantiation of simple templates inside functions, I didn't know this.
>
> But currently nested functions can't be overloaded. Probably for similar reasons inside a function you can't define more than one template with the same name. I presume this limit can be removed, so if you really need this you can ask for an enhancement request and if you can add a patch too to increase a bit the probability to see it fulfilled someday.
>
> Bye,
> bearophile
The spec explicitly says:
"Unlike module level declarations, declarations within function scope
are processed in order. This means that two nested functions cannot
mutually call each other:
[snip]
Future directions: This restriction may be removed."
My guess is that it will become possible eventually.
More information about the Digitalmars-d-learn
mailing list