aboutsummaryrefslogtreecommitdiff
path: root/absl/algorithm/container_test.cc
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2024-07-01 11:33:54 -0700
committerCopybara-Service <copybara-worker@google.com>2024-07-01 11:34:46 -0700
commit37ebde53cfcf400ef01b59c80ae3f72039cd90f2 (patch)
tree1977c5d4878e02cdaa96ed831f775e47bbd58f57 /absl/algorithm/container_test.cc
parenta27662352e9caafc264747562162a8a32ef36cb9 (diff)
downloadabseil-37ebde53cfcf400ef01b59c80ae3f72039cd90f2.tar.gz
abseil-37ebde53cfcf400ef01b59c80ae3f72039cd90f2.tar.bz2
abseil-37ebde53cfcf400ef01b59c80ae3f72039cd90f2.zip
Make c_begin, c_end, and c_distance conditionally constexpr.
This allows them to be used in constexpr expressions, such as the following: ``` constexpr int distance = absl::c_distance(std::array<int, 3>()); ``` Requires at least C++17 to be constexpr. PiperOrigin-RevId: 648435141 Change-Id: I8136e351a6dc4c25f06ef895fb449f4f11048480
Diffstat (limited to 'absl/algorithm/container_test.cc')
-rw-r--r--absl/algorithm/container_test.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/absl/algorithm/container_test.cc b/absl/algorithm/container_test.cc
index 7e54e2b2..e5e2bf3d 100644
--- a/absl/algorithm/container_test.cc
+++ b/absl/algorithm/container_test.cc
@@ -15,6 +15,7 @@
#include "absl/algorithm/container.h"
#include <algorithm>
+#include <array>
#include <functional>
#include <initializer_list>
#include <iterator>
@@ -31,6 +32,7 @@
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "absl/base/casts.h"
+#include "absl/base/config.h"
#include "absl/base/macros.h"
#include "absl/memory/memory.h"
#include "absl/types/span.h"
@@ -1160,4 +1162,13 @@ TEST(MutatingTest, PermutationOperations) {
EXPECT_EQ(initial, permuted);
}
+#if defined(ABSL_INTERNAL_CPLUSPLUS_LANG) && \
+ ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
+TEST(ConstexprTest, Distance) {
+ // Works at compile time with constexpr containers.
+ static_assert(absl::c_distance(std::array<int, 3>()) == 3);
+}
+#endif // defined(ABSL_INTERNAL_CPLUSPLUS_LANG) &&
+ // ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
+
} // namespace