|
| template<typename T, size_t N> |
| auto | detail::range_begin (const T(&arr)[N]) -> const T * |
| template<typename T, size_t N> |
| auto | detail::range_end (const T(&arr)[N]) -> const T * |
| template<typename T> |
| auto | detail::range_begin (T &&rng) -> decltype(static_cast< T && >(rng).begin()) |
| template<typename T> |
| auto | detail::range_end (T &&rng) -> decltype(static_cast< T && >(rng).end()) |
| template<typename T> |
| auto | detail::range_begin (T &&rng) -> enable_if_t<!has_member_fn_begin_end_t< T && >::value, decltype(begin(static_cast< T && >(rng)))> |
| template<typename T> |
| auto | detail::range_end (T &&rng) -> enable_if_t<!has_member_fn_begin_end_t< T && >::value, decltype(end(static_cast< T && >(rng)))> |
| template<typename Tuple, typename F, size_t... Is> |
| FMT_CONSTEXPR void | detail::for_each (index_sequence< Is... >, Tuple &&t, F &&f) |
| template<typename Tuple, typename F> |
| FMT_CONSTEXPR void | detail::for_each (Tuple &&t, F &&f) |
| template<typename Tuple1, typename Tuple2, typename F, size_t... Is> |
| void | detail::for_each2 (index_sequence< Is... >, Tuple1 &&t1, Tuple2 &&t2, F &&f) |
| template<typename Tuple1, typename Tuple2, typename F> |
| void | detail::for_each2 (Tuple1 &&t1, Tuple2 &&t2, F &&f) |
| template<typename Tuple, typename Char, size_t... Is> |
| auto | detail::tuple::get_formatters (index_sequence< Is... >) -> result_t< Char, decltype(get< Is >(std::declval< Tuple >()))... > |
| template<typename It, typename Sentinel> |
| FMT_BEGIN_EXPORT auto | join (It begin, Sentinel end, string_view sep) -> join_view< It, Sentinel > |
| | Returns a view that formats the iterator range [begin, end) with elements separated by sep.
|
| template<typename Range, FMT_ENABLE_IF(!is_tuple_like< Range >::value)> |
| auto | join (Range &&r, string_view sep) -> join_view< decltype(detail::range_begin(r)), decltype(detail::range_end(r))> |
| | Returns a view that formats range with elements separated by sep.
|
| template<typename Tuple, FMT_ENABLE_IF(is_tuple_like< Tuple >::value)> |
| FMT_CONSTEXPR auto | join (const Tuple &tuple FMT_LIFETIMEBOUND, string_view sep) -> tuple_join_view< Tuple, char > |
| | Returns an object that formats std::tuple with elements separated by sep.
|
| template<typename T> |
| auto | join (std::initializer_list< T > list, string_view sep) -> join_view< const T *, const T * > |
| | Returns an object that formats std::initializer_list with elements separated by sep.
|
Returns a view that formats range with elements separated by sep.
Example:
auto v = std::vector<int>{1, 2, 3};
fmt::print("{}", fmt::join(v, ", "));
// Output: 1, 2, 3
fmt::join applies passed format specifiers to the range elements:
fmt::print("{:02}", fmt::join(v, ", "));
// Output: 01, 02, 03
Returns an object that formats std::initializer_list with elements separated by sep.
Example:
fmt::print("{}", fmt::join({1, 2, 3}, ", "));
// Output: "1, 2, 3"