diff options
author | Abseil Team <absl-team@google.com> | 2017-10-13 10:21:40 -0700 |
---|---|---|
committer | jueminyang <jueminyang@google.com> | 2017-10-16 12:00:04 -0400 |
commit | 6de53819a7173bd446156237a37f53464b7732cc (patch) | |
tree | bffe391f131d02a8e16a2236ac9b89856b7fc012 /absl/types | |
parent | 1a9ba5e2e5a14413704f0c913fac53359576d3b6 (diff) |
Changes imported from Abseil "staging" branch:
- 432508bf64998983b3c194d5f164872ce3c2e573 Put visibility tags into absl external build files by Jon Cohen <cohenjon@google.com>
- 25d59d11e7b833fe632cddb5bf4d76075ae6282b Use ABSL_PREDICT_TRUE instead of *FALSE for the range che... by Jon Cohen <cohenjon@google.com>
- 8d8a5890a55ddd19aac849748441eeb57c684f10 Better detection for MSVC support on std::optional. by Xiaoyi Zhang <zhangxy@google.com>
- c1b31e4a97939885c3bbc23ecb093e9619e73ad1 Internal cleanup by Gennadiy Rozental <rogeeff@google.com>
- 4f56ad20c4eeccc6f5fb21ec6c7191233d34a090 Internal change. by Matt Calabrese <calabrese@google.com>
- d2a02b52c75c295708170f4d17b7ff442c8d6a97 Fixed a minor typo in the SimpleAtob() function comment. by Abseil Team <absl-team@google.com>
- 5adbff5c23a45278d06de2ef3a29ea51b0d1269e Internal cleanup by Gennadiy Rozental <rogeeff@google.com>
GitOrigin-RevId: 432508bf64998983b3c194d5f164872ce3c2e573
Change-Id: I32ddd151d3350b96a22e8f1830f19b59374953ad
Diffstat (limited to 'absl/types')
-rw-r--r-- | absl/types/optional_test.cc | 9 | ||||
-rw-r--r-- | absl/types/span.h | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/absl/types/optional_test.cc b/absl/types/optional_test.cc index 645f5b93..5eedfcfd 100644 --- a/absl/types/optional_test.cc +++ b/absl/types/optional_test.cc @@ -270,8 +270,17 @@ TEST(optionalTest, CopyConstructor) { EXPECT_TRUE(absl::is_trivially_copy_constructible< absl::optional<const TrivialCopyable>>::value); #endif + // When testing with VS 2017 15.3, there seems to be a bug in MSVC + // std::optional when T is volatile-qualified. So skipping this test. + // Bug report: + // https://connect.microsoft.com/VisualStudio/feedback/details/3142534 +#if defined(ABSL_HAVE_STD_OPTIONAL) && defined(_MSC_VER) && _MSC_VER >= 1911 +#define ABSL_MSVC_OPTIONAL_VOLATILE_COPY_BUG 1 +#endif +#ifndef ABSL_MSVC_OPTIONAL_VOLATILE_COPY_BUG EXPECT_FALSE(std::is_copy_constructible< absl::optional<volatile TrivialCopyable>>::value); +#endif } } diff --git a/absl/types/span.h b/absl/types/span.h index e1f006ad..f4738153 100644 --- a/absl/types/span.h +++ b/absl/types/span.h @@ -378,7 +378,7 @@ class Span { // // Returns a reference to the i'th element of this span. constexpr reference at(size_type i) const { - return ABSL_PREDICT_FALSE(i < size()) + return ABSL_PREDICT_TRUE(i < size()) ? ptr_[i] : (base_internal::ThrowStdOutOfRange( "Span::at failed bounds check"), |