------- Comment #19 from jason at gcc dot gnu dot org 2009-04-03 21:45 ------- Fixing that issue (we weren't canonicalizing deduced type arguments) and also catching typedefs that aren't typenames gives
../../../../boost/sequence/make_range.hpp:60: instantiated from boost::sequence::detail::range_maker<Elements, Begin, End, CalcSize>::type boost::sequence::detail::range_maker<Elements, Begin, End, CalcSize>::operator()(const L&, const B&, const E&, const C&) const [with L = boost::sequence::identity_property_map; B = char*; E = char*; C = boost::sequence::detail::size_difference<boost::array<char, 11u>, const boost::array<char, 6u> >; Elements = boost::sequence::identity_property_map; Begin = char*; End = char*; CalcSize = boost::sequence::detail::size_difference<boost::array<char, 11u>, boost::array<char, 6u> >; boost::sequence::detail::range_maker<Elements, Begin, End, CalcSize>::type = boost::sequence::range_::range<boost::sequence::identity_property_map, char*, char*, mpl_::integral_c<unsigned int, 5u> >; typename boost::result_of<CalcSize()>::type = mpl_::integral_c<unsigned int, 5u>] Does that look better? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25185