Boost logo

Boost :

Subject: Re: [boost] [Review] GGL review starts today, November 5th
From: Stefan Strasser (strasser_at_[hidden])
Date: 2009-11-11 15:56:51


this is not a review, and there won't be one because I'm not "knowledgable
about the problem domain", but some some quick comments about the traits
classes after reading the design rationale and looking at some code.

 - first of all, I'm curious why you chose to use one traits class for
each "agnosticism". this differs from the standard library, so I guess there
is a specific reason for it?
e.g. std::iterator_traits defines iterator_category, pointer, reference and so
on. the equivalent in a GGI Point concept is tag, coordinate, dimension...,
which are defined in 5 different traits classes.

 - is there a default implementation of the traits classes? I haven't found
one in code/coordinate_dimension.
this would simplify writing concept models in many cases, especially with 5
different traits for a Point.

e.g., the iterator_traits default implementation looks like this:

template<typename _Iterator>
    struct iterator_traits
      typedef typename _Iterator::iterator_category iterator_category;
      typedef typename _Iterator::value_type value_type;
      typedef typename _Iterator::difference_type difference_type;
      typedef typename _Iterator::pointer pointer;
      typedef typename _Iterator::reference reference;

 - on a minor note, tag<> seems a little non-descriptive, compared to
iterator_category in the STL.
Boost.Iostreams and Boost.PropertyMap both use "category", which might also be
suitable for GGI, since it has its own namespace and there are no other
categories I assume.

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