summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--LTS.md (renamed from absl/LTS.md)6
-rw-r--r--WORKSPACE8
-rw-r--r--absl/types/internal/variant.h45
-rw-r--r--absl/types/variant.h6
4 files changed, 29 insertions, 36 deletions
diff --git a/absl/LTS.md b/LTS.md
index f7be0997..385b4f06 100644
--- a/absl/LTS.md
+++ b/LTS.md
@@ -4,10 +4,10 @@ This repository contains periodic snapshots of the Abseil codebase that are
Long Term Support (LTS) branches. An LTS branch allows you to use a known
version of Abseil without interfering with other projects which may also, in
turn, use Abseil. (For more information about our releases, see the
-[Abseil Release Management](https://abseil.io/about/releases) guide.
+[Abseil Release Management](https://abseil.io/about/releases) guide.)
## LTS Branches
-The following lists LTS branches and the date they have been released:
+The following lists LTS branches and the dates on which they have been released:
-* [LTS Branch June 18, 2018](https://github.com/abseil/abseil-cpp/tree/lts_2018_06_18/)
+* [LTS Branch June 20, 2018](https://github.com/abseil/abseil-cpp/tree/lts_2018_06_20/)
diff --git a/WORKSPACE b/WORKSPACE
index 89a80bbf..a7b1c139 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -3,11 +3,11 @@ workspace(name = "com_google_absl")
http_archive(
name = "bazel_toolchains",
urls = [
- "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/archive/2cec6c9f6d12224e93d9b3f337b24e41602de3ba.tar.gz",
- "https://github.com/bazelbuild/bazel-toolchains/archive/2cec6c9f6d12224e93d9b3f337b24e41602de3ba.tar.gz",
+ "https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/archive/287b64e0a211fb7c23b74695f8d5f5205b61f4eb.tar.gz",
+ "https://github.com/bazelbuild/bazel-toolchains/archive/287b64e0a211fb7c23b74695f8d5f5205b61f4eb.tar.gz",
],
- strip_prefix = "bazel-toolchains-2cec6c9f6d12224e93d9b3f337b24e41602de3ba",
- sha256 = "9b8d85b61d8945422e86ac31e4d4d2d967542c080d1da1b45364da7fd6bdd638",
+ strip_prefix = "bazel-toolchains-287b64e0a211fb7c23b74695f8d5f5205b61f4eb",
+ sha256 = "aca8ac6afd7745027ee4a43032b51a725a61a75a30f02cc58681ee87e4dcdf4b",
)
# GoogleTest/GoogleMock framework. Used by most unit-tests.
diff --git a/absl/types/internal/variant.h b/absl/types/internal/variant.h
index 94c2ddab..3414c914 100644
--- a/absl/types/internal/variant.h
+++ b/absl/types/internal/variant.h
@@ -1100,49 +1100,40 @@ using EqualResult = decltype(std::declval<T>() == std::declval<T>());
template <class T>
using NotEqualResult = decltype(std::declval<T>() != std::declval<T>());
-template <class T>
-using HasLessThan = is_detected_convertible<bool, LessThanResult, T>;
-
-template <class T>
-using HasGreaterThan = is_detected_convertible<bool, GreaterThanResult, T>;
-
-template <class T>
-using HasLessThanOrEqual =
- is_detected_convertible<bool, LessThanOrEqualResult, T>;
-
-template <class T>
-using HasGreaterThanOrEqual =
- is_detected_convertible<bool, GreaterThanOrEqualResult, T>;
-
-template <class T>
-using HasEqual = is_detected_convertible<bool, EqualResult, T>;
-
-template <class T>
-using HasNotEqual = is_detected_convertible<bool, NotEqualResult, T>;
-
template <class... T>
-using RequireAllHaveEqualT =
- absl::enable_if_t<absl::conjunction<HasEqual<T>...>::value, bool>;
+using RequireAllHaveEqualT = absl::enable_if_t<
+ absl::conjunction<is_detected_convertible<bool, EqualResult, T>...>::value,
+ bool>;
template <class... T>
using RequireAllHaveNotEqualT =
- absl::enable_if_t<absl::conjunction<HasEqual<T>...>::value, bool>;
+ absl::enable_if_t<absl::conjunction<is_detected_convertible<
+ bool, NotEqualResult, T>...>::value,
+ bool>;
template <class... T>
using RequireAllHaveLessThanT =
- absl::enable_if_t<absl::conjunction<HasLessThan<T>...>::value, bool>;
+ absl::enable_if_t<absl::conjunction<is_detected_convertible<
+ bool, LessThanResult, T>...>::value,
+ bool>;
template <class... T>
using RequireAllHaveLessThanOrEqualT =
- absl::enable_if_t<absl::conjunction<HasLessThan<T>...>::value, bool>;
+ absl::enable_if_t<absl::conjunction<is_detected_convertible<
+ bool, LessThanOrEqualResult, T>...>::value,
+ bool>;
template <class... T>
using RequireAllHaveGreaterThanOrEqualT =
- absl::enable_if_t<absl::conjunction<HasLessThan<T>...>::value, bool>;
+ absl::enable_if_t<absl::conjunction<is_detected_convertible<
+ bool, GreaterThanOrEqualResult, T>...>::value,
+ bool>;
template <class... T>
using RequireAllHaveGreaterThanT =
- absl::enable_if_t<absl::conjunction<HasLessThan<T>...>::value, bool>;
+ absl::enable_if_t<absl::conjunction<is_detected_convertible<
+ bool, GreaterThanResult, T>...>::value,
+ bool>;
// Helper template containing implementations details of variant that can't go
// in the private section. For convenience, this takes the variant type as a
diff --git a/absl/types/variant.h b/absl/types/variant.h
index 5837a1be..55017ae1 100644
--- a/absl/types/variant.h
+++ b/absl/types/variant.h
@@ -445,9 +445,11 @@ constexpr bool operator!=(monostate, monostate) noexcept { return false; }
//------------------------------------------------------------------------------
template <typename T0, typename... Tn>
class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
+ // Intentionally not qualifing `negation` with `absl::` to work around a bug
+ // in MSVC 2015 with inline namespace and variadic template.
static_assert(absl::conjunction<std::is_object<T0>, std::is_object<Tn>...,
- absl::negation<std::is_array<T0>>,
- absl::negation<std::is_array<Tn>>...,
+ negation<std::is_array<T0> >,
+ negation<std::is_array<Tn> >...,
std::is_nothrow_destructible<T0>,
std::is_nothrow_destructible<Tn>...>::value,
"Attempted to instantiate a variant with an unsupported type.");