On Thu, May 9, 2013 at 10:14 PM, Andrei Alexandrescu <SeeWebsiteForEmail@erdani.org> wrote:
On 5/9/13 10:05 PM, Steven Schveighoffer wrote:
On Thu, 09 May 2013 21:47:14 -0400, Andrei Alexandrescu
<SeeWebsiteForEmail@erdani.org> wrote:
On 5/9/13 4:36 PM, Peter Alexander wrote:
I'm not sure about how common it is, but I really don't like the idea of
calls like swap(1, 2) being legal. Seems like a step backward from C++.
I think if we ever get swap(1, 2) to compile and run we'd effectively
have destroyed the D programming language.
Depends on context.
int swap(int diskNum, int partitionNum);
Someone pointed out that swap could be a function that swaps heap
indexes, and might even take by ref not caring if you want the resulting
value that was swapped.
with(someHeap)
{
swap(1, 2); // swap indexes 1 and 2
}
-Steve
Now that's great trolling!
To clear my name, just in case: I wasn't trolling. I have a use case (in a heap implementation):
void indexSwap(ref int a, ref int b) {
swap(array[a], array[b]);
swap(a, b);
}
It would be great to be able to call indexSwap(index, index*2 + 1) in one line without having to create a named temporary for the second argument, and with having it mutate index to be index*2 + 1. I think auto ref solves it, though a call-site solution (an inline way to create that temporary) seems like it would work too.
Dmitry