Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2000-11-01 17:02:32


> > The precise language used in that "hand-waving" is important, because it
> > may open the door to much more 'evil' examples than that swap(b, d)
> > thing.
>
> You have been prescient on this issue, so I won't argue. But I'd like to
see
> examples of what you have in mind.

No concrete examples at the moment; I'd like to see the proposed text that
will replace 17.4.3.1/1 first.

I'm thinking along the lines of "derived can be used in place of base, any
pointer would match a void *", that sort of thing.

> > Sorry, I lost you there. Full specialization is a special case of
> > partial specialization. What does this prove?
>
> Only that perhaps the example is /not/ a non-issue. I think we need to
> answer the questions posed (or implied) by LWG226, namely, "what is the
best
> way to do this? How are the writers and teachers among us going to
recommend
> that it be done?" If we recommend (partial) specialization, there will be
> cases (perhaps a majority) which admit the dangerous syntax that you want
to
> deprecate. There's a lot to remember and get right in "template<class T>
> void f<T*>(T*)"; maybe overloading would be a more reliable and
easy-to-use
> mechanism?

In that context, yes, you are right. This doesn't solve the problem with the
syntax, per se, but does not inflict it on users that want to customize the
standard library.

You must realize that I am not against std:: overloading; it's that I'm not
sure whether this particular cure is not worse than the disease (in terms of
defect reports and newsgroups postings generated.)

--
Peter Dimov
Multi Media Ltd.

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk