Boost logo

Boost :

From: David Abrahams (abrahams_at_[hidden])
Date: 2001-05-23 12:17:16

I am having two sets of problems with the Named Template Parameter feature
which was added to the Iterator Adaptors library:

First, a question: is anyone out there using this feature successfully?
1. When I try to use it, GCC chokes on whatever the last parameter in my
3-parameter chain is. It complains (incorrectly) that I'm passing a non-type
parameter where the template expects a type.
2. When I forgot to supply a Distance parameter for my iterator adaptor
wrapping a non-iterator Base type, I got other errors which I had lots of
trouble diagnosing. The code for handling the named template parameters is
so complicated and without substantial comments that it's hard to understand
what's going on.
Finally, these remarks:
It looks like the code we have in iterator_adaptor_test.cpp for testing the
named template parameter technique is inadequate, since it only tests one
case where no default parameter values are used. It didn't reveal the
problem I'm having with GCC. Given this and the complexity of the code I am
tempted to roll back the feature until more people than just Jeremy can
understand it.
When using the named template parameter approach in a template, it could get
a bit unweildy because instead of writing e.g., ::value_type<T> you need to
write ::template value_type<T>. I think our documentation should make
mention of this and we should consider whether there are ways to cut down
the syntax.

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