|
Boost : |
From: Dean Michael Berris (mikhailberis_at_[hidden])
Date: 2007-11-21 10:09:20
On Nov 21, 2007 10:07 PM, Andreas Harnack <ah.boost.04_at_[hidden]> wrote:
>
> So, it seems to me, that the template argument does not provide
> any additional value but only makes the expression above
> unnecessary complicate. Am I missing something?
>
Disclaimer: I am not part of the C++ Standards Committe. All that
follow are based on my interpretations of the situation.
Remember that some compilers (legacy I would like to think) do not
support template member functions. So for something in the standard
library to rely on a feature that not all compilers will support would
be careless.
Another is the issue of conversion, and enforcement of concepts on the
type T. When you want to ensure that T is default constructable and
assignable, and you want to force conversions of objects passed to
your function to T, you'd have code that looks like:
template <typename TReal>
struct polymorphic_conversion_forcer {
template <typename TDeduced>
void function(TDeduced const & t) {
TReal r = t; // TReal should be default constructable and
assignable, and TDeduced should be convertible to TReal
};
};
I hope this contributes to why ostream_iterator needs the T defined as
a class template instead of as a deduced member function.
-- Dean Michael C. Berris Software Engineer, Friendster, Inc. [http://cplusplus-soup.blogspot.com/] [mikhailberis_at_[hidden]] [+63 928 7291459] [+1 408 4049523]
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk