
It's already fixed in svn trunk. After the regression tests cycle, I will merge it to the release branch and it will be part of the next release of boost. If you'd like to see the change (it's a one-liner) you can see it here.
I saw the changes remove typedef typename Expr::proto_base_expr proto_base_expr; \ add typedef Expr proto_base_expr_; /**< INTERNAL ONLY */ \ add typedef typename proto_base_expr_::proto_base_expr proto_base_expr; \ This is more or less what I did to fix it manually. I am also glad to see this trick to get around the problem that for some macroed types 'typename' is necessary and for other it is not (I am assuming that this is the purpose). What and annoying thing this 'typename' thing! lately I am putting it everywhere just in case. It is easier to read the error message of its redundancy than the opposite one. offtopic: Do you know if this is 'typename' issue supposed to improve in the next-C++? Alfredo