digitalmars.D.learn - Template specialization question
- Steven Schveighoffer (7/7) Nov 24 2016 void foo(T)(T t){writeln("a");}
- ag0aep6g (6/12) Nov 24 2016 Took me a bit to find it, but it is documented:
- Steven Schveighoffer (4/10) Nov 24 2016 Thanks. I did not find this! You learn something new about D
- Stefan Koch (6/13) Nov 24 2016 That is expected.
void foo(T)(T t){writeln("a");}
void foo(T...)(T t){writeln("b");}
foo(1);
Compiles? If so, which prints out?
I was surprised by the answer. I can't find docs for it. Is the behavior
intended?
-Steve
Nov 24 2016
On 11/24/2016 06:47 PM, Steven Schveighoffer wrote:
void foo(T)(T t){writeln("a");}
void foo(T...)(T t){writeln("b");}
foo(1);
Compiles? If so, which prints out?
I was surprised by the answer. I can't find docs for it. Is the behavior
intended?
Took me a bit to find it, but it is documented:
"If both a template with a sequence parameter and a template without a
sequence parameter exactly match a template instantiation, the template
without a TemplateSequenceParameter is selected."
https://dlang.org/spec/template.html#variadic_template_specialization
Nov 24 2016
On Thursday, 24 November 2016 at 17:59:55 UTC, ag0aep6g wrote:Took me a bit to find it, but it is documented: "If both a template with a sequence parameter and a template without a sequence parameter exactly match a template instantiation, the template without a TemplateSequenceParameter is selected." https://dlang.org/spec/template.html#variadic_template_specializationThanks. I did not find this! You learn something new about D every day -Steve
Nov 24 2016
On Thursday, 24 November 2016 at 17:47:04 UTC, Steven
Schveighoffer wrote:
void foo(T)(T t){writeln("a");}
void foo(T...)(T t){writeln("b");}
foo(1);
Compiles? If so, which prints out?
I was surprised by the answer. I can't find docs for it. Is the
behavior intended?
-Steve
That is expected.
The general rule is go for the narrowest match.
Since a matches a smaller set then b.
a is selected.
Nov 24 2016









Steven Schveighoffer <schveiguy yahoo.com> 