<div dir="ltr">2013/3/30 bearophile <span dir="ltr"><<a href="mailto:bearophileHUGS@lycos.com" target="_blank">bearophileHUGS@lycos.com</a>></span><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
kenji hara:<div class="im"><br>
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
I think it will become reasonable. If you really want re-packing tuple, you<br>
can use {tup[0..1]}. It's quite handy.<br>
</blockquote>
<br></div>
This is a bad idea. It is not handy and it introduces a special case. Explicit is better than implicit.<br></blockquote><div><br></div><div style>That is "explicit". In D, opened tuple (currently it's generated from template parameters, e.g. std.typetuple.TypeTuple) and closed tuple (currently created by structs with alias tuple_field this; e.g. std.typecons.Tuple) are distinct. Slice operator always returns opened tuple.</div>
<div style>If tup[0..1] makes closed tuple implicitly, you cannot make new flattened tuple from other tuples.</div><div style><br></div><div style>auto x = {1,"hi"};</div><div style>auto y = {[1,2], S(1)};</div>
<div style>auto tup1 = {x[], y[]};   // creates {1,"hi", [1,2], S(1)}</div><div style>auto tup2 = {x, y};   // creates {{1,"hi"}, {[1,2], S(1)}}<br></div><div style><br></div><div style>Under your semantics, it is impossible.</div>
<div style><br></div><div style>Kenji Hara.</div><div style><br></div></div></div></div>