
Hi Andy,
Christophe, I'm sorry if my 2 cents won't be relevant since I'm not very familiar with neither MSM
I'm thankful for any help.
The most common reason for compiler slowliness/crashiness that I've seen came from too deep of a template recursion.
Agreed ;-)
I'm not totally sure, but I think that you're using mpl::vector, which, I think, is a form of a type list.
AFAIK, this would be mpl::list. mpl::vector is defined as (for example for vector4): template< typename T0, typename T1, typename T2, typename T3 > struct vector4 { typedef aux::vector_tag<4> tag; typedef vector4 type; typedef T0 item0; typedef T1 item1; typedef T2 item2; typedef T3 item3; ... }; So there is no recursion depth, at least not here. I think the culprit would more likely be the many mpl::fold. Thanks, Christophe

On Dec 11, 2009, at 12:19 PM, Christophe Henry wrote:
I'm not totally sure, but I think that you're using mpl::vector, which, I think, is a form of a type list.
AFAIK, this would be mpl::list. mpl::vector is defined as (for example for vector4):
template< typename T0, typename T1, typename T2, typename T3
struct vector4 { typedef aux::vector_tag<4> tag; typedef vector4 type; typedef T0 item0; typedef T1 item1; typedef T2 item2; typedef T3 item3; ... };
Actually, IIRC, it depends on whether we decide the compiler has a native typeof() implementation. If it does, you get a kind of nested type list and we use overload resolution for lookup, so vectors can grow arbitrarily. However, I don't know what we decide about VC8 and typeof. -- David Abrahams BoostPro Computing http://boostpro.com
participants (2)
-
Christophe Henry
-
David Abrahams