On Wednesday, 7 July 2021 at 19:14:52 UTC, Kevin Bailey wrote:
I'm trying to use some fairly simple template argument
deduction, but
maybe I'm not getting the syntax correct. C++ doesn't event
blink at
something like this, but D is giving me:
temptest.d(18): Error: template temptest.func cannot deduce
function from argument types !()(bar), candidates are:
temptest.d(10): func(T)(foo!T.bar f)
I guess D can't crack open a type like that?
```
template foo(T)
{
class bar
{
T t;
}
}
void func(T)( // 10
foo!(T).bar f)
{
}
int main()
{
foo!int.bar fi;
func(fi); // 18
}
```
This work:
```d
template foo(T){
class bar{
T t;
}
}
void func(alias F : foo!T, T)(F.bar f){
}
void main(){
foo!int.bar fi;
func(fi);
}
```