From: David Abrahams (dave_at_[hidden])
Date: 2004-09-13 16:19:33
Peder Holt <peder.holt_at_[hidden]> writes:
> Hi, again.
> I have done some more tinkering with the compile time constant typeof emulation.
> It now compiles for VC 6.5,VC 7.0 and GCC 3.4
> I have split the one argument constant into two. One per typeof
> instance, and one to iterate (from 1 to N) down the "type tree".
> This method also improves on the previous in that when a type T has
> been deduced using BOOST_TYPEOF, the type is reused when BOOST_TYPEOF
> is used again.
How could it not be? Templates only have one point of instantiation
for any given set of arguments.
> Anyhow, I have also implemented a feature for improving on the 64
> template depth restriction. Haven't got access to an EDG based
> compiler, but the implementation worked fine with VC 6.5
> I have also looked at the newes implementation of your integral
> encoding, Arkadiy, and it is basically the same as I am doing. I use
> one value to encode an integer, with the exception of 0xffffffff and
> 0xfffffffe, but the side effect is that I can not use arrays to create
> a size for sizeof. I have to use a struct containing two arrays, and I
> don't know if this is as portable, so I should perhaps adapt to your
> way of doing it.
> Also, your version of TYPEOF_REGISTER_TEMPLATE_X differs from mine.
> Where I use
> TYPEOF_REGISTER_TEMPLATE(some_class,2,(typename,unsigned int)), you use
> TYPEOF_REGISTER_TEMPLATE_X(some_class,(typename)(unsigned int))
> My has the advantage of looking more like a template argument list.
> Your has the advantage of not having to specify the number of template
> Which one is best?
> I haven't had time to do any work on integrating the two solutions
> yet, my typeof implementation is not mature enough, I guess, as I
> haven't tested it against any other unfortunate compilers without
> partial template specialization support. Help on this would be greatly
Sounds like integration instead of a big #ifdef switch might be
appropriate now (?)
-- Dave Abrahams Boost Consulting http://www.boost-consulting.com