std.digest toHexString
H. S. Teoh via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Thu Mar 16 10:40:51 PDT 2017
On Thu, Mar 16, 2017 at 05:06:39PM +0000, Adam D. Ruppe via Digitalmars-d-learn wrote:
[...]
> In isolation, implicit slicing can make sense.... but not with
> templates. In isolation, implicit immutable can make sense... but not
> with implicit slicing.
[...]
Is implicit slicing the culprit in the issue I just filed? (Bug 17261)
In retrospect, perhaps implicit casting to immutable is OK if we don't
allow implicit slicing:
char[32] func() { char[32] s; return s; }
string gunk() {
string x = func(); // error, if implicit slicing is not allowed
return x; // if allowed, this causes escaping ref to stack data
}
immutable char[32] hunk() {
immutable char[32] x = func(); // should be OK: no implicit slicing
return x; // OK: return by-value, no escaping refs
}
string junk() {
immutable char[32] x = func(); // should be OK: no implicit slicing
return x; // NG: implicit slicing causes escaping ref
// However, compiler is smart enough to catch
// it, so it produces a compile error
}
Seems like the real cause of bug 17261 is implicit slicing.
T
--
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan
More information about the Digitalmars-d-learn
mailing list