Deducing types for function templates
Magnus Lie Hetland
magnus at hetland.org
Mon Mar 21 10:23:39 PDT 2011
On 2011-03-15 21:13:36 +0100, Michel Fortin said:
>> Oh, it's much older than that:
>>
>> http://d.puremagic.com/issues/show_bug.cgi?id=2128
>
> I'm not sure it's the same thing, but I realize it's hard to say given
> Magnus in his original post didn't mention how he attempts to
> instantiate the template.
Hm. I've gone back to it now, and, sadly (as opposed to for the other
bugs I've encountered :) I didn't isolate and save the related code --
so now I'm unable to reproduce the const problem. (Who knows ... maybe
I was just trying to pass it on as an un-const parameter or something?
Might very well have been a bug on my part.)
Here's some sample code for the other part of my question, though
(which might not have been as unclear in the first place?).
class Foo(T) {
T foo;
}
template baz_t(T) {
alias real function(T, T) baz_t;
}
Foo!T foo(T)(T[] bar, baz_t!T baz) {
return new Foo!T;
}
real frozz(uint x, uint y) {
return 4.2;
}
void main() {
uint[] x = [1, 2, 3];
auto f = foo(x, &frozz);
}
The error is:
inferencebug.d(19): Error: template inferencebug.foo(T) does not match
any function template declaration
inferencebug.d(19): Error: template inferencebug.foo(T) cannot deduce
template function from argument types !()(uint[],real function(uint x,
uint y))
--
Magnus Lie Hetland
http://hetland.org
More information about the Digitalmars-d-learn
mailing list