#define FOLLY_NAMESPACE_STD_END }
#endif
+// If the new c++ ABI is used, __cxx11 inline namespace needs to be added to
+// some types, e.g. std::list.
+#if _GLIBCXX_USE_CXX11_ABI
+# define FOLLY_GLIBCXX_NAMESPACE_CXX11_BEGIN _GLIBCXX_BEGIN_NAMESPACE_CXX11
+# define FOLLY_GLIBCXX_NAMESPACE_CXX11_END _GLIBCXX_END_NAMESPACE_CXX11
+#else
+# define FOLLY_GLIBCXX_NAMESPACE_CXX11_BEGIN
+# define FOLLY_GLIBCXX_NAMESPACE_CXX11_END
+#endif
+
// Some platforms lack clock_gettime(2) and clock_getres(2). Inject our own
// versions of these into the global namespace.
#if FOLLY_HAVE_CLOCK_GETTIME
template <class T, class U>
struct pair;
#ifndef _GLIBCXX_USE_FB
+FOLLY_GLIBCXX_NAMESPACE_CXX11_BEGIN
template <class T, class R, class A>
class basic_string;
+FOLLY_GLIBCXX_NAMESPACE_CXX11_END
#else
template <class T, class R, class A, class S>
class basic_string;
class vector;
template <class T, class A>
class deque;
+FOLLY_GLIBCXX_NAMESPACE_CXX11_BEGIN
template <class T, class A>
class list;
+FOLLY_GLIBCXX_NAMESPACE_CXX11_END
template <class T, class C, class A>
class set;
template <class K, class V, class C, class A>