#ifndef STRFWD_H
#define STRFWD_H
-// This includes does nothing but defining _LIBCPP_VERSION
-// if libc++ is used (rather than libstdc++) - we first
-// check if we have at least a c++03 standard before
-// including the file
-#if (__cplusplus > 199711L)
-#include <ciso646>
-#endif
-
#ifdef USE_WCHAR_T
// Prefer this if possible because GNU libstdc++ has usable
#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 _LIBCPP_VERSION
+// 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 {
/**