On Wed, 12 Jun 2013 11:44:19 +0200, Zhenya <zh...@list.ru> wrote:
OK,you say that TypeTuple!("foo","bar") is a cool value of type TypeTuple!(string,string),right?
Well, yes and no, not really. It's a bit magical. In your case, it's assigned to an auto variable, and that variable gets that type. There are other ways to use a TypeTuple where it has other semantics, as you write yourself. As explained below, a TypeTuple is just a bag of template parameters, and thus obeys the rules for a bag of template parameters.
This behaviour confuses me a bit.
Understandable. It's not entirely straightforward, because the concerns of usability weigh heavier than those of consistency.
And I just don't understand why do we need TypeTuple's value semantic to implement std.Tuple,because AFAIK it use variadic template parameter pack != TypeTuple.
The definition od std.typetuple.TypeTuple is: template TypeTuple(T...){ alias TypeTuple = T; } So a TypeTuple is exactly the same as a variadic template parameter pack.
Sorry for my english.
No need to be, your English is great. -- Simen