On Friday, 11 May 2012 at 19:02:53 UTC, Mehrdad wrote:
On Friday, 11 May 2012 at 18:53:57 UTC, H. S. Teoh wrote:
On Fri, May 11, 2012 at 08:38:41PM +0200, Mehrdad wrote:
On Friday, 11 May 2012 at 18:21:24 UTC, H. S. Teoh wrote:
>Templates are stencils for generating code. There's nothing
>confusing about that.
"Stencils for generating code"? _This_??! :O
template hasMember(T, string name)
{ enum hasMember = __traits(hasMember, T, name); }
Imagine a new user's confusion when seeing something like
this.
(Not sure I got it exactly right, but my point is there.)
Yes, that's exactly how stencils work. You're essentially
generating a declaration of the form:
enum hasMember = ...;
<snip>
That's not how you see it when you're learning though.
It's more like, I can imagine someone asking these:
1. Why the heck do I see "hasMember" twice?
2. What does this have to do with enums?
3. Where is anything getting "returned"???
4. So you mean templates are THINGS?? I thought you needed a
template SOMETHING, like a template struct, template function,
etc...
5. What the heck is TypeTuple!()? Where's the blueprint?
etc.
I think TypeTuples originate from Andrei's famous book "Modern
C++ Design"(chapter 3: Typelists), so it's essentially known by
C++ programmers.
Indeed, it does need some introduction if you haven't been
exposed to these before.