Ability to join elements of std::initializer_list was added
This commit is contained in:
parent
3c24052cf1
commit
5edd2cec4e
@ -12,7 +12,9 @@
|
|||||||
#ifndef FMT_RANGES_H_
|
#ifndef FMT_RANGES_H_
|
||||||
#define FMT_RANGES_H_
|
#define FMT_RANGES_H_
|
||||||
|
|
||||||
|
#include <initializer_list>
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
|
|
||||||
#include "format.h"
|
#include "format.h"
|
||||||
|
|
||||||
// output only up to N items from the range.
|
// output only up to N items from the range.
|
||||||
@ -360,6 +362,29 @@ FMT_CONSTEXPR tuple_arg_join<wchar_t, T...> join(const std::tuple<T...>& tuple,
|
|||||||
return {tuple, sep};
|
return {tuple, sep};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\rst
|
||||||
|
Returns an object that formats `initializer_list` with elements separated by
|
||||||
|
`sep`.
|
||||||
|
|
||||||
|
**Example**::
|
||||||
|
|
||||||
|
fmt::print("{}", fmt::join({1, 2, 3}, ", "));
|
||||||
|
// Output: "1, 2, 3"
|
||||||
|
\endrst
|
||||||
|
*/
|
||||||
|
template <typename T>
|
||||||
|
arg_join<internal::iterator_t<const std::initializer_list<T>>, char> join(
|
||||||
|
std::initializer_list<T> list, string_view sep) {
|
||||||
|
return join(std::begin(list), std::end(list), sep);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
arg_join<internal::iterator_t<const std::initializer_list<T>>, wchar_t> join(
|
||||||
|
std::initializer_list<T> list, wstring_view sep) {
|
||||||
|
return join(std::begin(list), std::end(list), sep);
|
||||||
|
}
|
||||||
|
|
||||||
FMT_END_NAMESPACE
|
FMT_END_NAMESPACE
|
||||||
|
|
||||||
#endif // FMT_RANGES_H_
|
#endif // FMT_RANGES_H_
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
// {fmt} support for ranges, containers and types tuple interface.
|
// {fmt} support for ranges, containers and types tuple interface.
|
||||||
|
|
||||||
#include "fmt/ranges.h"
|
#include "fmt/ranges.h"
|
||||||
|
|
||||||
#include "gtest.h"
|
#include "gtest.h"
|
||||||
|
|
||||||
// Check if 'if constexpr' is supported.
|
// Check if 'if constexpr' is supported.
|
||||||
@ -68,6 +69,12 @@ TEST(RangesTest, JoinTuple) {
|
|||||||
EXPECT_EQ("4.0", fmt::format("{}", fmt::join(t4, "/")));
|
EXPECT_EQ("4.0", fmt::format("{}", fmt::join(t4, "/")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(RangesTest, JoinInitializerList) {
|
||||||
|
EXPECT_EQ("1, 2, 3", fmt::format("{}", fmt::join({1, 2, 3}, ", ")));
|
||||||
|
EXPECT_EQ("fmt rocks !",
|
||||||
|
fmt::format("{}", fmt::join({"fmt", "rocks", "!"}, " ")));
|
||||||
|
}
|
||||||
|
|
||||||
struct my_struct {
|
struct my_struct {
|
||||||
int32_t i;
|
int32_t i;
|
||||||
std::string str; // can throw
|
std::string str; // can throw
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user