|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2006-04-11 00:27:35
"Robert Ramey" <ramey_at_[hidden]> writes:
> On the other hand - I don't see the motivation for including concepts
> in the core language. Haven't we been able to implement concept
> checking with the current facilities of the library?
Concepts in the language go way beond checking. There's a great deal
of mess that we deal with today because we don't have true concept
support: everything from the perils of ADL, to the need for the
"typename" and "template" keywords, to tag dispatching, which is
really just a hack we invented to simulate concept-based overloading,
to many uses of enable_if, will largely disappear from code written
with in-language concept support.
> It seems to me that the main problem these days with the C++
> language these days is that its too hard to write a correct compiler
> for it. Making the core language fancier will only make this
> problem worse.
Actually, implementing concept support presents no great difficulty,
as Doug has demonstrated by implementing ConceptGCC.
> While, the commitee is at it - how about re-visiting two-phase lookup.
> Apparently there are enough implementers skeptical about it that
> they've declined to implement it.
AFAICT you just mean that Microsoft hasn't implemented it yet. All
the other major compiler vendors who actually do work on their C++
front ends at a reasonable pace (I'm not counting Borland in that
group) have got two-phase lookup implemented.
> (for good reason in my opinion). I believe this is related to the
> "export" feature - which has also failed to gain traction.
No, it's not related to export; it was implemented so that outright
errors in templates could be detected immediately where the template
was defined, rather than later when it is instantiated. Two-phase
lookup makes sense even for non-exported templates. An expression in
a template that doesn't depend on the template parameters shouldn't
change its meaning arbitrarily based on code that happens to come
*after* the template definition.
If you don't like that idea, you're probably not going to like
in-language concept support, since it is capable of moving *all* the
checking to phase 1. That's a major benefit.
> So its seems to me that there are a number of issues more
> important/urgent than the ones currently being focused on.
I'm afraid it's the same old song: if you want the committee to focus
on other issues, write a proposal that gets those issues on the table.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk