On Thu, 14 Feb 2013 15:33:19 -0500, Ivan Kazmenko <ga...@mail.ru> wrote:

... I get only exactly 3 * LIMIT postblit constructor calls, which is 300,000 instead of 11,389,556. While I still want to find where the excess 200,000 calls originate from, this is definitely asymptotically better than before

As I said elsewhere, the issue is D not having a good solution for accepting both rvalues and lvalues by ref. Jonathan mentioned auto ref, but it's not exactly implemented correctly.

In C++, it just takes all parameters as const T&, and that works for both lvalues and rvalues.

The extra 200k copies are from the implementation taking all parameters by value. If we didn't do that, sans a working auto ref, things like tree.insert(element(5)) would fail to compile (cannot pass an rvalue by reference)

-Steve

Reply via email to