On Wed, Jul 12, 2017 at 09:11:55AM -0600, Martin Sebor wrote:
> On 07/12/2017 07:13 AM, Trevor Saunders wrote:
> > On Tue, Jul 11, 2017 at 11:24:45AM -0400, David Malcolm wrote:
> > > +/* Some tokens naturally come in pairs e.g.'(' and ')'.
> > > + This class is for tracking such a matching pair of symbols.
> > > + In particular, it tracks the location of the first token,
> > > + so that if the second token is missing, we can highlight the
> > > + location of the first token when notifying the user about the
> > > + problem. */
> > > +
> > > +template <typename token_pair_traits_t>
> >
> > the style guide says template arguments should be in mixed case, so
> > TokenPairTraits, and the _t looks odd to my eyes.
> >
> > > +class token_pair
> > > +{
> > > + private:
> > > + typedef token_pair_traits_t traits_t;
> >
> > I'm not really sure what this is about, you can name it whatever you
> > like as a template argument, and this name seems less descriptive of
> > what its about.
>
> In generic code, a typedef for a template parameter makes it
> possible to refer to the parameter even when it's a member of
> a type whose template parameters aren't known (or that's not
> even a template). In the C++ standard library the naming
> convention is to end such typedefs with _type (e.g., value_type,
> allocator_type, etc.) GCC itself makes use of this convention
> in its hash_table template. (I have no idea if token_pair is
> ever used in type generic contexts where the typedef is needed.)
yes, I was asking because I strongly suspect it is not, and if someday
that turns out to be wrong we can add it then.
> As an aside, it's interesting to note that names that end in _t
> are reserved by POSIX, so (purely) pedantically speaking, making
> use of them for own symbols is undefined (this is probably one
> of the most commonly abused POSIX requirements; even the C++
> standard flagrantly disregards it).
heh, ok.
Trev
>
> Martin