On 7/16/2011 2:01 PM, Andrei Alexandrescu wrote:
On 7/16/11 10:50 AM, d coder wrote:
Sorry for bumping. Want to know if there is a solution to the situation
I face often.

I think this is a reasonable thing to want, but it's difficult to implement technically. You want a comparitor with state (which is fine), but at the same time the state must be cleverly wired during construction of the enclosing class object.

I'll think of a reasonable workaround or library fix, if I come with anything I'll post here.


Andrei

I think this is a _really_ good reason why we shouldn't use the template hammer for every nail we see. D templates are nice, but I think they're being used a bit more than they should be. I'm actually still confused at why _functions_ should be passed as template parameters -- that just doesn't make much sense to me, because: 1. If it's an optimization issue, it's overkill, since the benefits don't really justify it. A good compiler would just examine the parameter itself in the same exact way.
2. Problems like this can be difficult to solve, as was mentioned.
3. Templates are *useless* in shared libraries. Sure, they work as long as you want to give others the source to your code and don't care about code bloat, but as soon as you want a bit more structure, templates are just the exact opposite of what you're looking for.

I think this problem could simply be solved if BinaryHeap instead took a parameter in its structure as a comparator, like in most other programming languages. Is there a good reason why this (and pretty much everything else) is becoming templated?

Reply via email to