Template questions
Bill Baxter
dnewsgroup at billbaxter.com
Sat Mar 22 18:03:46 PDT 2008
Edward Diener wrote:
> I am going to be asking a number of questions about D templates in
> various posts, and I hope others can help me understand D templates
> despite the documentation.
>
> First question:
>
> In the documentation on templates I read these lines:
>
> "Even if template arguments are implicitly converted to the same
> template parameter type, they still refer to different instances:
> struct TFoo(int x) { }
> static assert(is(TFoo!(3) == TFoo!(2 + 1))); // 3 and 2+1 are both 3 of
> // type
> int
> static assert(!is(TFoo!(3) == TFoo!(3u))); // 3u and 3 are different
> // types"
>
> To what is the "int" on line 6 refer ?
> Why is line 3 considered a D template ? It does not begin with 'template
> ...'. It looks like a simple 'struct' to me with a public member. How
> then can it be instantiated as if it were a template ?
struct TFoo(int x) { .. }
is shorthand in D for
template TFoo(int x) {
struct TFoo { .. }
}
Just like how with D function templates this
void Foo(int x)() { .. }
is shorthand for this:
template Foo(int x) {
void Foo() { .. }
}
--bb
More information about the Digitalmars-d
mailing list