about summary refs log tree commit diff
path: root/absl/memory/memory.h
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2018-07-25T16·37-0700
committerMatt Calabrese <calabrese@x.team>2018-07-25T18·13-0400
commitc2e00d341913bf03b4597ade5b056042e23e8c58 (patch)
treeafe60b3c7db3ca3769f74ee94cef26c116be4645 /absl/memory/memory.h
parent9e060686d1c325f34f9806b45fe77bafeed00aee (diff)
Export of internal Abseil changes.
--
eb6cc81ef7e89e10fc9df47418af93e22fd116d2 by Abseil Team <absl-team@google.com>:

Workaround clang bug https://bugs.llvm.org/show_bug.cgi?id=38289

PiperOrigin-RevId: 206006290

--
509e9829295bfc429b82de42f2e073c756ea5709 by Jon Cohen <cohenjon@google.com>:

Remove make_unique ambiguity when using gcc 4.9 in C++14 mode.

gcc 4.9.4 has __cplusplus at 201300L instead of 201402L when in C++14 mode, I guess indicating incomplete support.  Anyways, it causes a problem with this check as in c++14 mode in old gcc we were defining absl::make_unique when std::make_unique was present

PiperOrigin-RevId: 205886589
GitOrigin-RevId: eb6cc81ef7e89e10fc9df47418af93e22fd116d2
Change-Id: I9acf3f3d0fd3b0b46ae099821f3bf21b72c28b2b
Diffstat (limited to 'absl/memory/memory.h')
-rw-r--r--absl/memory/memory.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/absl/memory/memory.h b/absl/memory/memory.h
index c43e156682fd..f207169a6885 100644
--- a/absl/memory/memory.h
+++ b/absl/memory/memory.h
@@ -83,7 +83,11 @@ struct MakeUniqueResult<T[N]> {
 
 }  // namespace memory_internal
 
-#if __cplusplus >= 201402L || defined(_MSC_VER)
+// gcc 4.8 has __cplusplus at 201301 but doesn't define make_unique.  Other
+// supported compilers either just define __cplusplus as 201103 but have
+// make_unique (msvc), or have make_unique whenever __cplusplus > 201103 (clang)
+#if (__cplusplus > 201103L || defined(_MSC_VER)) && \
+    !(defined(__GNUC__) && __GNUC__ == 4 && __GNUC_MINOR__ == 8)
 using std::make_unique;
 #else
 // -----------------------------------------------------------------------------