On 2012-04-22 06:41:46 +0000, [email protected] (Christophe
Travert) said:
Michel Fortin , dans le message (digitalmars.D:164824), a écrit :
So with your system, how do you write the swap function?
I've thought about that.
The scope(label) is the key.
void T swap(T)(scope T a, scope(a) T b)
{
scope(a) tmp = a;
a = b;
b = tmp;
}
scope(inout) would also do the trick, since it is implicitely shared
between parameters and return values.
Your proposal is very similar to some things that were discussed in
2008 when escape analysis became the topic of the day on this
newsgroup. There were two problems for adoption: it makes writing
functions difficult (because you have to add all that scoping thing to
your mental model) and implementing new type modifiers is a major
undertaking that didn't fit with the schedule. While the second problem
might disappear given enough time, the first one is a hurdle.
You might find this a good read:
<http://www.digitalmars.com/d/archives/digitalmars/D/Escape_analysis_78791.html>
--
Michel Fortin
[email protected]
http://michelf.com/