------- Comment #27 from jason at gcc dot gnu dot org 2009-04-08 19:31 ------- I've gone ahead and checked in the -fno-pretty-templates patch, which should produce
../../../../boost/sequence/make_range.hpp:60: instantiated from boost::sequence::detail::range_maker<boost::sequence::identity_property_map, char*, char*, boost::sequence::detail::size_difference<boost::array<char, 11u>, boost::array<char, 6u> > >::range<boost::sequence::identity_property_map, char*, char*, mpl_::integral_c<unsigned int, 5u> > boost::sequence::detail::range_maker<boost::sequence::identity_property_map, char*, char*, boost::sequence::detail::size_difference<boost::array<char, 11u>, boost::array<char, 6u> > >::operator()<boost::sequence::identity_property_map, char*, char*, boost::sequence::detail::size_difference<boost::array<char, 11u>, const boost::array<char, 6u> > >(const boost::sequence::identity_property_map&, char* const&, char* const&, const boost::sequence::detail::size_difference<boost::array<char, 11u>, const boost::array<char, 6u> >&) const where compiling without that flag 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> >] so you can choose which one you want. I think typedef handling still isn't perfect after these issues; we only strip typedefs at the top level, and may still print class-scope typedef names in other contexts, especially since the work to do access control on typedefs in templates means that class-scope typedefs get a variant type now, so the typedef name is visible to the diagnostic code in a lot of cases where it wasn't previously. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25185