http://d.puremagic.com/issues/show_bug.cgi?id=10999
--- Comment #5 from Maxim Fomin <[email protected]> 2013-09-10 09:22:15 PDT --- (In reply to comment #4) > (In reply to comment #3) > > > Reinterpreting short as ushort has nothing to do with type safety - you > > cannot > > corrupt anything, > > "Type safety" is not the same as "memory safety". ushort and short have two > different ranges, so Ada language (and functional languages as Haskell, etc) > refuse the conversion between them. I don't like the introduction of more > implicit type conversions. Note, that you left important piece of quote. Please elaborate on which kind of type safety is broken by conversion from short to ushort (please with examples of system languages like C/C++). (different ranges is not a problem because it is the same data reinterpreted in differen ways - which is not a surprise in low-level languages) > The D type system tells apart the two types: > > > import std.stdio; > void bar(ushort[2]) { "A".writeln; } > void bar(short[2]) { "B".writeln; } > void main() { > ushort[2] a; > short[2] b; > bar(a); > bar(b); > } > > > So if you write only the first bar, and you call it with an ushort[2], with > your proposal this compiles. If later you add the second bar, now the second > bar gets called. This is also what happens with single ushort and short value > arguments, but generally it's not a clean design you want to expand to arrays > too. This can't be an argument as similar situation can be created with other conversions in D. In other words, if you consider your example as an argument against implicit conversion, following should also be disallowed: import std.stdio; void bar(bool) { "bool".writeln; } void bar(long) { "long".writeln; } void main() { int a; bar(a); // long bar(1); // bool bar(2); // long } import std.stdio; void bar(int[]) { "int[]".writeln; } void bar(int[1]) { "int[1]".writeln; } void main() { int[1] a; bar(a); // int[1] bar([1]); // int[1] bar([]); // int[] bar([1,1]); //int[] } and some other conversion stuff. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
