Nick Sabalausky:
I have a feeling I'm missing something obvious, but how do I
create
something like this?:
class Foo(TArgs...)
{
void func(/+ args must exactly match TArgs +/)
{
}
}
new Foo(int).func(5); // Ok
new Foo(int, string).func(5, "hello"); // Ok
// Error! Overload not found!
new Foo(int).func(5, 8);
new Foo(int).func("hellO");
// Error! Overload not found!
new Foo(int, string).func(5);
new Foo(int, string).func("hello");
Maybe it's just a slow-brain day, but I'm having trouble
working out
the right syntax for that.
Do you mean something like this?
class Foo(TArgs...) {
void func(TArgs args) {}
}
void main() {
(new Foo!(int)).func(5); // Ok
(new Foo!(int, string)).func(5, "hello"); // Ok
// Error! Overload not found!
(new Foo!(int)).func(5, 8);
(new Foo!(int)).func("hellO");
// Error! Overload not found!
(new Foo!(int, string)).func(5);
(new Foo!(int, string)).func("hello");
}
The extra () around the new is something that we are asking to be
not required. But Walter for unknown reasons seems to not like
the idea...
Bye,
bearophile