diff options
Diffstat (limited to 'absl/strings/str_join.h')
-rw-r--r-- | absl/strings/str_join.h | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/absl/strings/str_join.h b/absl/strings/str_join.h index 6a92c0f5..8d7bc6ba 100644 --- a/absl/strings/str_join.h +++ b/absl/strings/str_join.h @@ -247,12 +247,20 @@ std::string StrJoin(const Range& range, absl::string_view separator, return strings_internal::JoinRange(range, separator, fmt); } -template <typename T, typename Formatter> +template <typename T, typename Formatter, + typename = typename std::enable_if< + !std::is_convertible<T, absl::string_view>::value>::type> std::string StrJoin(std::initializer_list<T> il, absl::string_view separator, Formatter&& fmt) { return strings_internal::JoinRange(il, separator, fmt); } +template <typename Formatter> +inline std::string StrJoin(std::initializer_list<absl::string_view> il, + absl::string_view separator, Formatter&& fmt) { + return strings_internal::JoinRange(il, separator, fmt); +} + template <typename... T, typename Formatter> std::string StrJoin(const std::tuple<T...>& value, absl::string_view separator, Formatter&& fmt) { @@ -269,16 +277,22 @@ std::string StrJoin(const Range& range, absl::string_view separator) { return strings_internal::JoinRange(range, separator); } -template <typename T> -std::string StrJoin(std::initializer_list<T> il, - absl::string_view separator) { +template <typename T, typename = typename std::enable_if<!std::is_convertible< + T, absl::string_view>::value>::type> +std::string StrJoin(std::initializer_list<T> il, absl::string_view separator) { + return strings_internal::JoinRange(il, separator); +} + +inline std::string StrJoin(std::initializer_list<absl::string_view> il, + absl::string_view separator) { return strings_internal::JoinRange(il, separator); } template <typename... T> std::string StrJoin(const std::tuple<T...>& value, absl::string_view separator) { - return strings_internal::JoinAlgorithm(value, separator, AlphaNumFormatter()); + return strings_internal::JoinTuple(value, separator, + std::index_sequence_for<T...>{}); } ABSL_NAMESPACE_END |