Commit 50b33d29 authored by Yaacov Akiba Slama's avatar Yaacov Akiba Slama Committed by facebook-github-bot-9

Fix gcc 5.2 compilation when _GLIBCXX_USE_CXX11_ABI is not 0

Summary: Tested in debian stretch when used in hhvm which can now run drupal 7.
The compilation error is also fixed by #214 but this fix maintains
 forward declarations of basic_string and list.
Closes https://github.com/facebook/folly/pull/329

Reviewed By: yfeldblum

Differential Revision: D2533880

fb-gh-sync-id: 85e18eeeba9efa1b4150217ba526b32b5573e15e
parent c1a6582f
......@@ -208,6 +208,16 @@ namespace std { typedef ::max_align_t max_align_t; }
#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
......
......@@ -240,8 +240,10 @@ FOLLY_NAMESPACE_STD_BEGIN
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;
......@@ -250,8 +252,10 @@ template <class T, class A>
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>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment