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

Reply via email to