Boost logo

Boost :

From: Arkadiy Vertleyb (vertleyb_at_[hidden])
Date: 2006-05-12 20:35:26


"David Abrahams" <dave_at_[hidden]> wrote

> "Peder Holt" <peder.holt_at_[hidden]> writes:
>
> > It turns out that BOOST_TYPEOF_NESTED_TYPEDEF has a problem when used
inside
> > functions on VC8.0 (possibly other compilers as well)
> > This is because BOOST_TYPEOF_NESTED_TYPEDEF internally defines a member
> > template:
> >
> > struct a {
> > template<typename T>
> > struct b{
> > };
> > };
> >
> > VC8.0 doesn't handle this (error C2892: local class shall not have
member
> > templates)
> >
> > It is possible to avoid this problem, but this would cripple
> > BOOST_TYPEOF_NESTED_TYPEDEF because it would reintroduce the
> > BOOST_TYPEOF_LIMIT_SIZE limitation on the expression complexity.
> >
> > The alternative is to disallow NESTED_TYPEDEF inside functions, and
> > write a note on this in the docs. Is this acceptable?
>
> Didn't I post a syntax during the review that avoids the need for this
> macro?

You probably mean getting rid of BOOST_TYPEOF_TPL(), and using typename
BOOST_TYPEOF() instead. If this is the case -- we did try to implement it,
but failed because of the problems with one version of the gcc compiler (I
think 3.3.3), debug mode, which would ICE at any attempt to wrap its native
typeof into anything at all.

Regards,
Arkadiy


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk