Re: Boost.function enhanced (a little)
* Mathias Gaunard:
On 7 oct, 07:05, "Alf P. Steinbach" <al...@start.no> wrote:
And if so, whether let's-teach-'em actually was a design criterion of
boost::function and/or other Boost libraries?
Making the library intuitive is part of the design of all good
libraries.
I'm sorry but AFAICS this is irrelevant to the question asked.
But, anyway...
The questions were about one of the needlessly non-intutive parts of
boost::function (namely, its lack of support for creating delegates), and
you
say that all good libraries are designed to be intuitive. Hence, treating
the
response as meant to be relevant to at least something in context, you're
arguing that boost::function is not a "good" library. That it's a bad
library.
I disagree, of course: nothing's perfect, and a few obvious flaws don't make
the
library not "good".
Regarding the question, it was about your statement that
A) "the library should make it easier for users to understand separation of
concerns"
Forcing library users to repeatedly, again and again, write very verbose
code to
combine the separated concerns when they need to express what is a single
concept in other languages (namely a delegate), I really fail to see how
making
the library user's work more tedious, error prone and verbose helps the C++
programmers see the light about how great that idea is?
B) "instead of using a do-everything utility"
I do not understand which "do-everything utility" you're referring to.
One that would do both type erasure and member function binding.
I'm sorry but this doesn't seem to make sense in context.
Providing delegate construction support is not to "do-everything".
So, what concretely do/did you mean by "do-everything", or do you now
realize
that you were mistaken in using that misleading term?
C) "that will do more than they need"
Exactly what are you referring to here?
Using an utility that does both mean you'll have to pay for the
overhead of type erasure even if you just need member function
binding.
I'm sorry but again AFAICS this is irrelevant to the question asked.
Could you perhaps explain this "overhead of type erasure" that you "have to
pay"
in more detail? Not some overhead that can be easily avoided. The one that
you
"have to pay"?
Regarding the question I posed, about what you meant earlier by "will do
more
than they need":
It's tedious but trivial to add construction of delegates on top of
boost::function. That construction adds no overhead and it's very often
needed;
e.g. IIRC this thread started with someone posting code to do it. Hence if
that
was what you were referring to, something relevant to the thread,
maintaining
that construction of delegates is "more than they need", then you were just
plain Wrong(TM).
If on the other hand you were referring to the fact that it's possible to
use a
general mechanism also in some cases where a more specialized mechanism
might be
more efficient, then that's the case for /all/ library functionality.
Including that it's the case for the functionality that boost::function
currently does offer, which by that argument shouldn't be offered. Hence if
that
was what you meant, then it was meaningless, ridiculous and absurd.
So either your statement was just Wrong(TM) (first case), or it was
completely
Silly(TM) (second case), as far as I can see.
Cheers & hth.,
- Alf
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]