A template for method forwarding?
Christopher Wright
dhasenan at gmail.com
Fri Dec 12 16:27:42 PST 2008
Bill Baxter wrote:
> On Sat, Dec 13, 2008 at 6:13 AM, Bill Baxter <wbaxter at gmail.com> wrote:
>> Cool. I don't see anything D2 specific there, so I think it should
>> work in D1 ok.
>> std.traits.ParameterTypeTuple and std.traits.ReturnType both exist in
>> D1, if that's what you were worried about.
>>
>> I think there may be a problem with 0-arg functions in the code?
>> You handle the void return type (which I'm not sure is necessary
>> actually -- I think D lets you say "return foo()" for a void function
>> specifically to handle this kind of template situation), but I think
>> maybe you don't handle a void argument? I'm getting an error with
>> that for some reason... will dig more.
>
> Actually I think it's not zero-arg functions.
> The problem is that one of my arguments is a templated type.
> The .stringof says the parameter type is TheTemplate, when the
> argument type is really TheTemplate!(T). So when your code tries to
> generate the function it tries to make it void
> aFunction(TheTemplate x) { ... }, which obviously ain't gonna fly.
>
> So looks like bad stringof is the culprit, once again.
>
> --bb
This case is a known bug and has a patch.
Really, stringof should give a fully qualified name, and any template
parameters should use fully qualified names. The existing patch doesn't
do that, but it's a minor improvement.
More information about the Digitalmars-d
mailing list