// RUN: not %clang_cc1 -fsyntax-only %s 2>&1 | FileCheck %s

// We only care to check whether the compiler crashes; the actual
// diagnostics are uninteresting.
// CHECK: 8 errors generated.
template<class _CharT>     struct char_traits;
template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_ios;
template<typename _CharT, typename _Traits = char_traits<_CharT> >     class ostreambuf_iterator;
template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >     class num_get;
template<typename _CharT, typename _Traits>     class basic_ostream : virtual public basic_ios<_CharT, _Traits>     {
  template<typename _CharT, typename _InIter>     _InIter     num_get<_CharT, _InIter>::     _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,        ios_base::iostate& __err, string& __xtrc) const     {
    const bool __plus = __c == __lit[__num_base::_S_iplus];
    if ((__plus || __c == __lit[__num_base::_S_iminus])        && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)        && !(__c == __lc->_M_decimal_point))      {
