|
Boost : |
From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2004-12-18 14:19:55
Hi all,
Here is a question: besides primitive types, which types/templates should be
registered as a part of typeof library?
The first candidate is STL. The containers, functors, binders, etc.
The STL iterators is a separate question. In most STL implementations they
are typedefs, and therefore their template names are non-standard and
different. In Dinkumware they are nested classes, and so are the subject to
non-deduced context, which prevents them from being registered in a trivial
way. Peder does have a solution for this, based on a bug in VC7.1 that
allows to work-around non-deduced context (I am personally against using
this, although I have to admit that it does the job). So, if we decide to
put #ifdefs, based on STL implementation, and *if* we decide to use Peder's
solution, it looks like we can take care of all the standard library
(including iterators) on the typeof lib level.
I have to note here that, if we decide against iterator registration,
iterator instantiations can be always registered as needed, by the end user:
BOOST_TYPEOF_REGISTER_TYPE(MyClass)
BOOST_TYPEOF_REGISTER_TYPE(std::vector<MyClass>::iterator)
I think if other libraries want to be supported by typeof (like Spirit, for
example), those libraries should register their types/templates themselves
(just because of synchronisation issue). Any help would be provided, of
course.
I would greatly appreciate any opinions on the subject.
Regards,
Arkadiy
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk