+
+ // these warning have to be disabled and not just temporarily disabled
+ // because they will be given at the end of the compilation of the
+ // current source and there is absolutely nothing we can do about them
+
+ // 'foo': unreferenced inline function has been removed
+ #pragma warning(disable:4514)
+
+ // 'function' : function not inlined
+ #pragma warning(disable:4710)
+
+ // 'id': identifier was truncated to 'num' characters in the debug info
+ #pragma warning(disable:4786)
+#endif // VC++ < 7
+
+/**
+ GCC's visibility support is broken for libstdc++ in some older versions
+ (namely Debian/Ubuntu's GCC 4.1, see
+ https://bugs.launchpad.net/ubuntu/+source/gcc-4.1/+bug/109262). We fix it
+ here by mimicking newer versions' behaviour of using default visibility
+ for libstdc++ code.
+ */
+#if defined(HAVE_VISIBILITY) && defined(HAVE_BROKEN_LIBSTDCXX_VISIBILITY)
+ #pragma GCC visibility push(default)