Refine check for unordered_{map|set} availability.

It's not enough to check for C++11 language support, as it's possible for
projects to enable C++11 language and library features independently (e.g.
Chromium currently does this).  Instead, explicitly check the library version to
see if it is recent enough to include unordered_{map|set}.
pull/766/head
Peter Kasting 10 years ago
parent 47210ccd77
commit 5ea84dd335
  1. 8
      src/google/protobuf/stubs/hash.h

@ -41,10 +41,10 @@
#define GOOGLE_PROTOBUF_HAVE_HASH_MAP 1
#define GOOGLE_PROTOBUF_HAVE_HASH_SET 1
// Use C++11 unordered_{map|set} if available. Otherwise, libc++ always support
// unordered_{map|set}
#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X) || \
defined(_LIBCPP_VERSION)
// Use C++11 unordered_{map|set} if available.
#if ((__cplusplus >= 201103L) && \
((defined(__GLIBCXX__) && (__GLIBCXX__ > 20090421)) || \
(defined(_LIBCPP_VERSION) && (_LIBCPP_STD_VER >= 11))))
# define GOOGLE_PROTOBUF_HAS_CXX11_HASH
// For XCode >= 4.6: the compiler is clang with libc++.

Loading…
Cancel
Save