https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100912
--- Comment #9 from Qiu Chaofan <qiu.chaofan at outlook dot com> --- I also get following 'symbol not found' error for following case (under -mabi=ieeelongdouble): undefined reference to `std::__gnu_cxx11_ieee128::money_get<wchar_t, std::istreambuf_iterator<wchar_t, std::char_traits<wchar_t> > >::money_get(unsigned long)' Maybe related? #include <iterator> #include <locale> #include <sstream> struct D : public std::money_get<wchar_t> { D() : std::money_get<wchar_t>() {} iter_type do_get(iter_type s, iter_type end, bool intl, std::ios_base &str, std::ios_base::iostate &err, long double &units) const { return std::money_get<wchar_t>::do_get(s, end, intl, str, err, units); } } d; int main(void) { std::wistringstream in(L"1 "); in.imbue(std::locale::classic()); in.exceptions(std::ios_base::goodbit); long double val; std::istreambuf_iterator<wchar_t> end; std::istreambuf_iterator<wchar_t> begin(in); std::ios_base::iostate prior_err = in.rdstate(); std::ios_base::iostate err = in.rdstate(); d.do_get(begin, end, true, in, err, val); return 0; }