
"David Abrahams" <dave@boost-consulting.com> wrote
"Peder Holt" <peder.holt@gmail.com> 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