Boost logo

Boost :

From: Jeremy Siek (jsiek_at_[hidden])
Date: 2000-11-20 10:31:54

Hi John,

I agree, misconcept checking is definitely something to
watch out for.

I think the standards requirements for lower_bound
should be reworded. It says that T should be LessThanComparable,
but that is somewhat irrelevant to the functionality
required in lower_bound. What lower_bound should require
is something I would call

LeftLessThanComparable<target_type, value_type>

which just requires that target_type be comparable
"on the left" with the value_type.

  template <class XX, class YY>
  struct LeftLessThanComparable_concept
    void constraints() {
      require_boolean_expr(b < a);
    bool boolean;
    XX a;
    YY b;

It's too bad concept checking wasn't around when
the standard was being written. It would have
caught a lot of these kind of errors.



On Mon, 20 Nov 2000, John E. Potter wrote:

> On Mon, 20 Nov 2000, John Maddock wrote:
> > For example an input iterator has to be used in a particular way
> > - with alternating calls to operator++ and operator*
> I don't think so. That is the only safe way to use an output
> iterator; however, it does not apply to input iterator. Example: wc -w
> cout << distance(istream_iterator<string>(cin),
> istream_iterator<string>()) << endl;
> I see misconcept checking as a real problem. It has been reported that
> the stl_port rejects lower_bound when the target type does not match
> the iterator value_type. In spite of the fact that the compare object
> supports target type, value_type in either order.
> John

 Jeremy Siek www:
 Ph.D. Candidate email: jsiek_at_[hidden]
 Univ. of Notre Dame work phone: (219) 631-3906

Boost list run by bdawes at, gregod at, cpdaniel at, john at