Boost logo

Boost :

Subject: Re: [boost] [contract] concept error messages
From: Matt Calabrese (rivorus_at_[hidden])
Date: 2012-10-07 16:12:21


On Sun, Oct 7, 2012 at 3:58 PM, Lorenzo Caminiti <lorcaminiti_at_[hidden]>wrote:

> BTW, is this true also for N3351 concepts or just for C++0x concepts?
> Because iterator tags are still in N3351 and they are even made part
> of the specification (so they're not just an implementation
> detail/workaround):
>

N3351 does this because they do not have direct support for explicit
concept maps. The problem is, you still need to at least emulate explicit
concept maps in their approach, otherwise you can get ambiguity between
concepts that have similar requirements but with different semantics/axioms
(such as forward iterator and input iterator). The way N3351 disambiguates
is they require C++98 style iterator categories -- if a creator of an
iterator type associates with it an input_iterator_tag, then it is an input
iterator. C++0x's approach removed the need for iterator categories because
it directly supports both auto and explicit concepts.

-- 
-Matt Calabrese

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