Dnia 18-10-2010 o 23:05:27 Don <nos...@nospam.com> napisał(a):
Michel Fortin wrote:
On 2010-10-18 14:31:26 -0400, Tomek Sowiński <j...@ask.me> said:
Call me crazy, but I think it is safe to implicitly convert a pure
function's return value to immutable. What you think?
Well, it depends on the arguments of the pure function. Here's two
cases where it won't work.
[snip]
So I'd precise your assertion by saying it is safe to implicitly
convert a pure function's return value to immutable, but only when all
the arguments you feed to it are immutable.
Tomek stated that at the end of his original post. I think he is correct.
And no, I don't think it would be difficult to implement.
Thanks for support. I see two ways to go about it:
pure T make(Args args) { ... }
unittest {
T t = make(...); // good
immutable T t = make(...); // also good
}
Or:
pure immutable(T) make(Args args) {
T t = ...;
// initialize t
return t; // conversion happens here
}
I like the first one.
--
Tomek