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/

Reply via email to