aboutsummaryrefslogtreecommitdiff
path: root/absl/strings/internal/str_join_internal.h
diff options
context:
space:
mode:
authorValery Mironov <32071355+MBkkt@users.noreply.github.com>2024-05-15 09:55:15 -0700
committerCopybara-Service <copybara-worker@google.com>2024-05-15 09:56:10 -0700
commitcbfe51b2c01da330ff292b145de91346a5950163 (patch)
treeb44cde72bf5ab82bda549202adaec082d4ab33ad /absl/strings/internal/str_join_internal.h
parent6683a6174003e51259b4f6ffb276941aa27709ce (diff)
downloadabseil-cbfe51b2c01da330ff292b145de91346a5950163.tar.gz
abseil-cbfe51b2c01da330ff292b145de91346a5950163.tar.bz2
abseil-cbfe51b2c01da330ff292b145de91346a5950163.zip
PR #1672: Optimize StrJoin with tuple without user defined formatter
Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1672 https://github.com/abseil/abseil-cpp/discussions/1671 Merge ddcbb2466b2c9c4048d60be7e58cf47f935c257d into eba8db7baf6c326870f28e58977075b7b2fb243d Merging this change closes #1672 COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1672 from MBkkt:optimize-str-join ddcbb2466b2c9c4048d60be7e58cf47f935c257d PiperOrigin-RevId: 633988391 Change-Id: I2b3904211a29de3a768fb90a7fc106d7ff6c03e7
Diffstat (limited to 'absl/strings/internal/str_join_internal.h')
-rw-r--r--absl/strings/internal/str_join_internal.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/absl/strings/internal/str_join_internal.h b/absl/strings/internal/str_join_internal.h
index 440d47ff..3e730c7a 100644
--- a/absl/strings/internal/str_join_internal.h
+++ b/absl/strings/internal/str_join_internal.h
@@ -33,6 +33,7 @@
#include <cstdint>
#include <cstring>
+#include <initializer_list>
#include <iterator>
#include <limits>
#include <memory>
@@ -321,6 +322,15 @@ std::string JoinRange(const Range& range, absl::string_view separator) {
return JoinRange(begin(range), end(range), separator);
}
+template <typename Tuple, std::size_t... I>
+std::string JoinTuple(const Tuple& value, absl::string_view separator,
+ std::index_sequence<I...>) {
+ return JoinRange(
+ std::initializer_list<absl::string_view>{
+ static_cast<const AlphaNum&>(std::get<I>(value)).Piece()...},
+ separator);
+}
+
} // namespace strings_internal
ABSL_NAMESPACE_END
} // namespace absl