15 template <std::
size_t N>
20 template <std::
size_t N>
25 template <std::
size_t N>
30 template <std::
size_t N>
35 template <
typename... Ts>
38 std::is_same_v<Ts, char>) &&
41 template <
typename... Ts>
46 thread_local std::ostringstream oss;
53 template <std::
size_t N>
54 [[nodiscard]] constexpr
inline std::size_t
getSize(
char (&)[N]) noexcept
59 template <std::
size_t N>
60 [[nodiscard]] constexpr
inline std::size_t
getSize(
const char (&)[N]) noexcept
65 [[nodiscard]] constexpr
inline std::size_t
getSize(
const char* s) noexcept
72 [[nodiscard]] constexpr
inline std::size_t
getSize(
const char&) noexcept {
return 1; }
74 [[nodiscard]]
inline std::size_t
getSize(
const std::string& s) noexcept {
return s.size(); }
76 [[nodiscard]] constexpr
inline std::size_t
getSize(
const std::string_view& s) noexcept
81 template <
typename... Ts>
85 const std::size_t space = (1 + ... +
getSize(xs));
86 result.reserve(result.size() + space);
87 ((result += xs), ...);
90 template <
typename... Ts>
100 template <
typename Sep,
typename First,
typename... Rest>
101 [[nodiscard]]
auto concat(Sep sep,
const First& first,
const Rest&... rest)
106 ((result += sep, result += rest), ...);
111 template <
typename Sep,
typename First,
typename... Rest>
112 [[nodiscard]]
auto concat(Sep sep,
const First& first,
const Rest&... rest)
116 thread_local std::ostringstream oss;
119 ((oss << sep << rest), ...);
Definition: cluster_descriptor.hpp:13
auto concatInto(std::string &result, const Ts &... xs) -> std::enable_if_t< AllConvertibleToStringView< Ts... >, void >
Definition: concat.hpp:82
constexpr bool AllConvertibleToStringView
Definition: concat.hpp:36
auto concat(const Ts &... xs) -> std::enable_if_t<!AllConvertibleToStringView< Ts... >, std::string >
Definition: concat.hpp:43
constexpr std::size_t getSize(char(&)[N]) noexcept
Definition: concat.hpp:54
bool_constant< false > false_type
Definition: integral_constant.hpp:63
typename std::enable_if< B, T >::type enable_if_t
Definition: enable_if.hpp:27
bool_constant< true > true_type
Definition: integral_constant.hpp:62
Definition: concat.hpp:12