#include "cxxformat.hpp" #include #include #include template struct format::FormatConvert, char>>> { template static std::string accessConvert(const T *from) { if constexpr (_N == N) { return "}"; } else { return format::format("%v", from[_N]) + (_N + 1 < N ? ", " : "") + accessConvert<_N + 1>(from); } } static std::string convert(const T *from) { return "array[" + std::to_string(N) + "]{" + accessConvert<0>(from); } }; template struct format::FormatConvert> { static std::string convert(const std::array &from) { return format::FormatConvert::convert(from.data()); } }; template struct format::AutoConversion> : format::SimpleAutoConversion<'s', const std::array &> {}; template struct format::AutoConversion, char>>> : format::SimpleAutoConversion<'s', const T(&)[N]> {}; int main(int, char *[]) { constexpr std::array array[] = {std::array{1, 2, 3, 4, 5}, std::array{1, 2, 3, 4, 5}, std::array{1, 2, 3, 4, 5}, std::array{1, 2, 3, 4, 5}, std::array{1, 2, 3, 4, 5}}; std::cout << format::format<"Hello %s: %d %03.5f %V">("World", 7, 3.5, array) << std::endl; std::cout << format::format<"%v%v%v%v%v">('H', 'e', 'l', 'l', 'o') << std::endl; std::cout << format::format("%V", &array) << std::endl; std::cout << format::format("%s", std::array{1, 2, 3, 4, 5}) << std::endl; std::cout << format::format("Hello %v: %-7v %v", "World", 3.5, 5) << std::endl; std::cout << format::format("Hello %s: %d %03.5f", "World", 7, 3.5) << std::endl; return 0; }