#else
+#if defined(_MSC_VER) && (_MSC_VER >= 1600)
+#include <cstdint>
+namespace lyx { typedef uint32_t char_type; }
+#include "support/numpunct_lyx_char_type.h" // implementation for our char_type needed
+#else
#include <boost/cstdint.hpp>
namespace lyx { typedef boost::uint32_t char_type; }
+#endif
#endif
// Forward definitions do not work with libc++
-#ifdef USE_LLVM_LIBCPP
+// For gcc5 with the new std::string ABI forward declarations would work in
+// principle, but I am not sure whether we want non-standard
+// "namespace __cxx11" in our sources.
+#if defined(USE_LLVM_LIBCPP) || defined(USE_GLIBCXX_CXX11_ABI)
#include <string>
#else
typedef basic_ostream<char, char_traits<char> > ostream;
typedef basic_ostringstream<char, char_traits<char>, allocator<char> > ostringstream;
-} // namepace std
+} // namespace std
#endif
+
+
+
+
namespace lyx {
/**