digitalmars.D.bugs - [Issue 9089] New: Very restrictive Tuple constructor
- d-bugmail puremagic.com (30/30) Nov 27 2012 http://d.puremagic.com/issues/show_bug.cgi?id=9089
- d-bugmail puremagic.com (23/23) Dec 02 2012 http://d.puremagic.com/issues/show_bug.cgi?id=9089
http://d.puremagic.com/issues/show_bug.cgi?id=9089 Summary: Very restrictive Tuple constructor Product: D Version: D2 Platform: All OS/Version: All Status: NEW Keywords: rejects-valid Severity: enhancement Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: bearophile_hugs eml.cc Is it possible for the Tuple constructors to have value range analysis and accept code like this? import std.typecons: Tuple; alias T = Tuple!(short); void main() { short x = 1; // OK T t = T(1); // error } Currently in DMD 2.061alpha it gives: ...\dmd2\src\phobos\std\typecons.d(406): Error: cannot implicitly convert expression (_param_0) of type int to short test.d(5): Error: template instance std.typecons.Tuple!(short).Tuple.__ctor!(int) error instantiating -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Nov 27 2012
http://d.puremagic.com/issues/show_bug.cgi?id=9089 Andrej Mitrovic <andrej.mitrovich gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |andrej.mitrovich gmail.com 09:44:19 PST --- We could change the ctor to: this(U...)(U values) if (U.length == Types.length) { foreach (i, Unused; Types) { static if (isNumeric!(Types[i])) static assert(isNumeric!(U[i])); field[i] = to!(Types[i])(values[i]); } } (there are 2 ctors but we can use the same approach) The isNumeric check is necessary because "to" also converts strings to integrals/floating point. I'm not sure if this would cover all the cases though. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 02 2012