summaryrefslogtreecommitdiff
path: root/boost/interprocess/detail/std_fwd.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/interprocess/detail/std_fwd.hpp')
-rw-r--r--boost/interprocess/detail/std_fwd.hpp40
1 files changed, 15 insertions, 25 deletions
diff --git a/boost/interprocess/detail/std_fwd.hpp b/boost/interprocess/detail/std_fwd.hpp
index 098e67067c..282771c3e6 100644
--- a/boost/interprocess/detail/std_fwd.hpp
+++ b/boost/interprocess/detail/std_fwd.hpp
@@ -22,26 +22,8 @@
// Standard predeclarations
//////////////////////////////////////////////////////////////////////////////
-#if defined(_LIBCPP_VERSION)
- #define BOOST_INTERPROCESS_CLANG_INLINE_STD_NS
- #pragma GCC diagnostic push
- #if defined(__clang__)
- #pragma GCC diagnostic ignored "-Wc++11-extensions"
- #endif
- #define BOOST_INTERPROCESS_STD_NS_BEG _LIBCPP_BEGIN_NAMESPACE_STD
- #define BOOST_INTERPROCESS_STD_NS_END _LIBCPP_END_NAMESPACE_STD
-#elif defined(BOOST_GNU_STDLIB) && defined(_GLIBCXX_BEGIN_NAMESPACE_VERSION) //GCC >= 4.6
- #define BOOST_INTERPROCESS_STD_NS_BEG namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION
- #define BOOST_INTERPROCESS_STD_NS_END _GLIBCXX_END_NAMESPACE_VERSION } // namespace
-#elif defined(BOOST_GNU_STDLIB) && defined(_GLIBCXX_BEGIN_NAMESPACE) //GCC >= 4.2
- #define BOOST_INTERPROCESS_STD_NS_BEG _GLIBCXX_BEGIN_NAMESPACE(std)
- #define BOOST_INTERPROCESS_STD_NS_END _GLIBCXX_END_NAMESPACE
-#else
- #define BOOST_INTERPROCESS_STD_NS_BEG namespace std{
- #define BOOST_INTERPROCESS_STD_NS_END }
-#endif
-
-BOOST_INTERPROCESS_STD_NS_BEG
+#include <boost/move/detail/std_ns_begin.hpp>
+BOOST_MOVE_STD_NS_BEG
struct input_iterator_tag;
struct forward_iterator_tag;
@@ -51,17 +33,25 @@ struct random_access_iterator_tag;
template<class T>
struct char_traits;
+#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1800) &&defined(BOOST_DINKUMWARE_STDLIB)
+#define BOOST_INTERPROCESS_STD_FWD_MSVC_IOS_BUG
+// Compiler bug workaround. Previous versions (<= VC11)
+// used dummy virtual functions
+# pragma vtordisp(push, 2)
+#endif
+
template<class CharT, class Traits>
class basic_ostream;
template<class CharT, class Traits>
class basic_istream;
-BOOST_INTERPROCESS_STD_NS_END
+#ifdef BOOST_INTERPROCESS_STD_FWD_MSVC_IOS_BUG
+# pragma vtordisp(pop)
+# undef BOOST_INTERPROCESS_STD_FWD_MSVC_IOS_BUG
+#endif
-#ifdef BOOST_INTERPROCESS_CLANG_INLINE_STD_NS
- #pragma GCC diagnostic pop
- #undef BOOST_INTERPROCESS_CLANG_INLINE_STD_NS
-#endif //BOOST_INTERPROCESS_CLANG_INLINE_STD_NS
+BOOST_MOVE_STD_NS_END
+#include <boost/move/detail/std_ns_end.hpp>
#endif //#ifndef BOOST_INTERPROCESS_DETAIL_STD_FWD_HPP