http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45983
--- Comment #9 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-10-15 15:05:36 UTC --- More reduced testcase: template <int N> class T1 { int m[N]; typedef float scalar_type_t; typedef scalar_type_t scalar_array_t[1]; const scalar_array_t &decay(void) const; }; class T2 { public: float vals[1]; float get_value(void) const { return vals[0]; } }; T2 channel_params; float output_audio(void) { return channel_params.get_value(); } The scalar_type_t seems to leak through the seemingly identical array types scalar_type_t[1] and float[1].