On Monday, May 27, 2013 21:13:10 Andrej Mitrovic wrote: > On 5/27/13, Diggory <[email protected]> wrote: > > - There's no necessity to ever actually completely remove the > > deprecated behaviour, the deprecation warning is enough. > > It's not, because now you're forced to always compile with the > deprecation switch.
That's not true anymore. Deprecations only print out warning messages by default, precisely so that we can deprecate things without breaking everyone's code. -d makes the compile shut up, but it is no longer required to get your code to compile. That being said, I don't really like the idea of deprecating something with the intention that it stick around forever. It just provides a smoother transition. > All I see here is the problem with the actual *name* of the template. > If it's so horrible to use this name, the simplest thing we can do is > introduce an alias to TypeTuple, ala "Seq" or "ExpressionTuple", or > something similar. > > Of course "TypeTuple" is a misnomer, but it's way too late to change > it now or even change its semantics. Even slowing it down by doing > type-checking is a problem. Yeah. The only problem I see is the name. I don't see any real benefit in making it so that we have _three_ different types of compile time tuples, particularly when their uses tend to be fairly localized rather than being passed around through APIs and the like (if they get passed through APIs, they'd just be template or function argument lists), and any mismatch of types and expressions will result in an error pretty much instantly. So, holding both expressions and types isn't really a problem IMHO - particularly since that's what the built-in tuples do, and all TypeTuple really is is a template to let you create and manipulate the built-in tuples. So, if we change anything, we change the name via an alias and leave all of the semantics alone. But given how much TypeTuple is used and that the module is named std.typetuple, it would likely have to be a permanent alias, in which case you _still_ have to explain what TypeTuple is, and the gain of renaming it is minimal IMHO (it could even make things _worse_ by increasing the confusion by having multiple names). The name sucks, but I think that we're stuck with it at this point. For it to be worth it, we'd have to be willing to force everyone to change their code to use the new name, and for the most part, we're just not doing that sort of thing anymore. - Jonathan M Davis
