Variadic function template with one inferred template argument

Ben Jones fake at fake.fake
Sat Nov 7 20:43:04 UTC 2020


I'm trying to write a function template with 1 parameter whose 
type is inferred, but with the other parameters variadic.

Basically, I want to do this:

auto f(Ts..., Inferred)(Inferred inf){}

and call it with f!(X,Y,Z)(w) //inferred will be typeof(w), Ts... 
== (X, Y, Z)

which I can't do because the variadic template args have to come 
last.

Is there a way to change f so that the caller can use it like I 
want?  I tried this approach which didn't work.

template f(Ts...){
   auto f(Inferred)(Inferred inf){}
}

I don't see a way to specify a variadic set of template args but 
have one inferred.  I could wrap the variadic args in another 
template so f just takes 2 params, but I'd like to avoid that 
because it makes the calling code more complicated.


More information about the Digitalmars-d-learn mailing list