http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47808
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-03-09 14:05:35 UTC --- template <typename T> struct typeprops { typedef T complex; typedef T real; }; namespace good { template <typename T> inline typename typeprops<T>::real abs (T const & x) { return 1; } } template <typename T> bool UseScientificNotation (T const & x); void OutputVar (int const n) { if (UseScientificNotation (n)) return; } template <typename T> bool UseScientificNotation (T const & x) { typedef int ai[(good::abs(0.1) > 0) ? 1 : -1]; }