Export of internal Abseil changes.
-- ffe43f972f956e3f9a8fb7b68993d243ba8f79fb by Abseil Team <absl-team@google.com>: Replace usage of soon-to-be-deprecated http_archive rule with Skylark equivalent https://github.com/abseil/abseil-cpp/pull/138 PiperOrigin-RevId: 204939972 -- 24021d7aec96ed013333760fba590eba5a9ddf63 by Abseil Team <absl-team@google.com>: Remove incorrect constraint that StrSplit only works on std::strings; rather, it works on anything string-like. PiperOrigin-RevId: 204761431 -- ce61d3b0ac163caa1156817f3d1a997d9376a3f3 by Derek Mauro <dmauro@google.com>: Support s390/s390x in examine_stack.cc (GitHub issue #135). This is UNTESTED (no machine to test on). PiperOrigin-RevId: 204756692 -- 68ecab659a95d713c4342fe9e8008c4cdf6abfc1 by Derek Mauro <dmauro@google.com>: Update WORKSPACE.bazel Gogole Test dependency, remove the unused RE2 dependency. PiperOrigin-RevId: 204741814 -- 891e185522f0934e3b48a75617be5fc859d75dbd by Derek Mauro <dmauro@google.com>: Fix endian_test.cc on big endian platforms. GitHub issue #135 PiperOrigin-RevId: 204738726 -- 9becfa12fbb525cd97e5695b94677bd3ea3f61b0 by Abseil Team <absl-team@google.com>: Improve error messages in absl::variant by splitting up the conditions in the valid type static_assert. This makes it slightly easier to determine what type is causing issues. PiperOrigin-RevId: 204508430 GitOrigin-RevId: ffe43f972f956e3f9a8fb7b68993d243ba8f79fb Change-Id: Icc5e4e8cd1a4cea98dfbed794cd992b734812e1d
This commit is contained in:
parent
f826f1d489
commit
e0def7473e
5 changed files with 24 additions and 39 deletions
|
|
@ -449,14 +449,19 @@ constexpr bool operator!=(monostate, monostate) noexcept { return false; }
|
|||
//------------------------------------------------------------------------------
|
||||
template <typename T0, typename... Tn>
|
||||
class variant<T0, Tn...> : private variant_internal::VariantBase<T0, Tn...> {
|
||||
static_assert(absl::conjunction<std::is_object<T0>,
|
||||
std::is_object<Tn>...>::value,
|
||||
"Attempted to instantiate a variant containing a non-object "
|
||||
"type.");
|
||||
// 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>...,
|
||||
negation<std::is_array<T0> >,
|
||||
negation<std::is_array<Tn> >...,
|
||||
std::is_nothrow_destructible<T0>,
|
||||
static_assert(absl::conjunction<negation<std::is_array<T0> >,
|
||||
negation<std::is_array<Tn> >...>::value,
|
||||
"Attempted to instantiate a variant containing an array type.");
|
||||
static_assert(absl::conjunction<std::is_nothrow_destructible<T0>,
|
||||
std::is_nothrow_destructible<Tn>...>::value,
|
||||
"Attempted to instantiate a variant with an unsupported type.");
|
||||
"Attempted to instantiate a variant containing a non-nothrow "
|
||||
"destructible type.");
|
||||
|
||||
friend struct variant_internal::VariantCoreAccess;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue