Deducing types for function templates

Michel Fortin michel.fortin at michelf.com
Tue Mar 15 09:36:04 PDT 2011


On 2011-03-15 10:42:46 -0400, Magnus Lie Hetland <magnus at hetland.org> said:

> I've got a function template along these lines:
> 
>   Foo!T foo(T)(T[] bar, real function(T,T) baz) { ... }
> 
> The main reason I'm using this is that it seems necessary to use a 
> function, rather than a type (such as Foo), if you want the compiler to 
> deduce the compile-time parameters. (Right?)
> 
> Now ... this works just fine. However, if I try to add "const" before 
> "T[]", DMD no longer groks it. Is that how it shold be? Seems awkward 
> to me... (Or maybe I'm just doing it wrong?)

I'd say add it to bugzilla. It's probably related to this bug:
<http://d.puremagic.com/issues/show_bug.cgi?id=5531>


> And a followup question: Writing out the type of baz like this (in 
> several places) is also a bit awkward. I'd like to have a template so I 
> could just do
> 
>   Foo!T foo(T)(T[] bar, baz_t!T baz) { ... }
> 
> However, I haven't been able to define such a template without running 
> into the same problem (i.e., that DMD no longer can deduce what T 
> should be from my arguments).

My feeling is that it should work. Feel free to file a bug or 
enhancement request in the bug tracker.


-- 
Michel Fortin
michel.fortin at michelf.com
http://michelf.com/



More information about the Digitalmars-d-learn mailing list