49# include <type_traits>
58 template <
typename T,
typename...
Args>
65 template <
typename T,
typename =
void>
71 std::
void_t<decltype(std::declval<std::ostringstream &>()
72 << std::declval<T>())>> : std::true_type
75 template <typename... Args>
76 inline constexpr bool are_stream_insertable_v =
77 (is_stream_insertable<std::decay_t<Args>>::value && ...);
80 template <typename T, typename = void>
81 struct is_stream_insertable : detail::is_stream_insertable<T>
84 template <typename... Args>
85 inline constexpr bool are_stream_insertable_v =
86 detail::are_stream_insertable_v<Args...>;
98 template <typename... Args>
99 inline std::string build_string(Args &&... args)
101 static_assert(detail::are_stream_insertable_v<Args...>,
102 "build_string arguments must be stream-insertable");
103 std::ostringstream stream;
104 detail::build_msg_impl(stream, std::forward<Args>(args)...);
109 template <typename... Args>
110 inline std::string build_error_msg(Args &&... args)
112 return build_string(std::forward<Args>(args)...);
void build_msg_impl(std::ostringstream &)
Main namespace for Aleph-w library functions.
std::decay_t< typename HeadC::Item_Type > T
DynList< T > maps(const C &c, Op op)
Classic map operation.