6#ifndef MIMICPP_PRINTING_STATE_PRINT_HPP
7#define MIMICPP_PRINTING_STATE_PRINT_HPP
17#ifndef MIMICPP_DETAIL_IS_MODULE
20 #include <type_traits>
24namespace mimicpp::printing::detail::state
27 print_iterator OutIter,
29 printer_for<OutIter, T> Printer = custom::Printer<std::remove_const_t<T>>>
30 constexpr OutIter
print(
31 [[maybe_unused]] util::priority_tag<4>
const,
35 return Printer::print(
41 print_iterator OutIter,
43 printer_for<OutIter, T> Printer = state::common_type_printer<std::remove_const_t<T>>>
44 constexpr OutIter
print(
45 [[maybe_unused]] util::priority_tag<3>
const,
49 return Printer::print(
55 print_iterator OutIter,
57 printer_for<OutIter, T> Printer = state::cxx23_backport_printer<std::remove_const_t<T>>>
58 constexpr OutIter
print(
59 [[maybe_unused]] util::priority_tag<2>
const,
63 return Printer::print(
68 template <pr
int_iterator OutIter, format::detail::formattable<CharT> T>
69 constexpr OutIter
print(
70 [[maybe_unused]] util::priority_tag<1>
const,
74 return format::format_to(
80 template <pr
int_iterator OutIter>
81 constexpr OutIter
print(
82 [[maybe_unused]] util::priority_tag<0>
const,
86 return format::format_to(
91 inline constexpr util::priority_tag<4> maxStatePrinterTag{};
99 template <pr
int_iterator OutIter>
100 constexpr OutIter
operator()(OutIter out,
auto&& value)
const
105 detail::state::print(detail::state::maxStatePrinterTag, out, value)
106 } -> std::convertible_to<OutIter>; },
107 "The given type is not printable. ");
109 return detail::state::print(
110 detail::state::maxStatePrinterTag,
119 std::invoke(*
this, std::ostreambuf_iterator{stream}, value);
121 return std::move(stream).str();
#define MIMICPP_DETAIL_MODULE_EXPORT
Definition Config.hpp:19
constexpr OutIter operator()(OutIter out, auto &&value) const
Definition Print.hpp:100
StringT operator()(auto &&value) const
Definition Print.hpp:116
constexpr printing::PrintFn print
Functional object, converting the given object to its textual representation.
Definition Print.hpp:183
std::basic_ostringstream< CharT, CharTraitsT > StringStreamT
Definition Format.hpp:35
std::basic_string< CharT, CharTraitsT > StringT
Definition Fwd.hpp:391