9#ifndef INCLUDED_BSLFMT_STREAMED
10#define INCLUDED_BSLFMT_STREAMED
105#include <bslscm_version.h>
118#ifdef BSL_FORMATTABLE_DEFINED
120#define BSLFMT_STREAMED_INSTANCE_DEPRECATED_ \
121 BSLS_DEPRECATE_FEATURE( \
124 "There is already a formatter available for the specified type, " \
125 "please use that instead of streaming.")
135struct Streamed_NoWarningConstructorTag {
152template <
class t_STREAMABLE>
156 const t_STREAMABLE& d_object;
161#ifdef BSL_FORMATTABLE_DEFINED
168 Streamed(
const t_STREAMABLE&
object, Streamed_NoWarningConstructorTag);
171 template <
class t_STREAMABLE2>
173 requires(!bsl::formattable<t_STREAMABLE2, char>);
174 template <
class t_STREAMABLE2>
176 requires(bsl::formattable<t_STREAMABLE2, char>);
186#ifdef BSL_FORMATTABLE_DEFINED
187 Streamed(
const t_STREAMABLE&
object)
188 requires(!bsl::formattable<t_STREAMABLE, char>);
189 BSLFMT_STREAMED_INSTANCE_DEPRECATED_
190 Streamed(
const t_STREAMABLE&
object)
191 requires(bsl::formattable<t_STREAMABLE, char>);
193 Streamed(
const t_STREAMABLE&
object);
199 const t_STREAMABLE&
object()
const;
202#if defined(BSLS_COMPILERFEATURES_SUPPORT_CTAD) && \
203 defined(__apple_build_version__) && BSLS_PLATFORM_CMP_VERSION < 180000
208template <
class t_TYPE>
214#ifdef BSL_FORMATTABLE_DEFINED
225template <
class t_STREAMABLE>
227 requires(!bsl::formattable<t_STREAMABLE, char>);
229template <
class t_STREAMABLE>
232 requires(bsl::formattable<t_STREAMABLE, char>);
234template <
class t_STREAMABLE>
247#ifdef BSL_FORMATTABLE_DEFINED
248template <
class t_STREAMABLE>
251 Streamed_NoWarningConstructorTag)
258template <
class t_STREAMABLE>
266#ifdef BSL_FORMATTABLE_DEFINED
267template <
class t_STREAMABLE>
269 requires(!bsl::formattable<t_STREAMABLE, char>)
274template <
class t_STREAMABLE>
275BSLFMT_STREAMED_INSTANCE_DEPRECATED_
276Streamed<t_STREAMABLE>::Streamed(
const t_STREAMABLE&
object)
277 requires(bsl::formattable<t_STREAMABLE, char>)
282template <
class t_STREAMABLE>
291#ifdef BSL_FORMATTABLE_DEFINED
292template <
class t_STREAMABLE>
294 requires(!bsl::formattable<t_STREAMABLE, char>)
296 return Streamed<t_STREAMABLE>(
object, Streamed_NoWarningConstructorTag());
299template <
class t_STREAMABLE>
300BSLFMT_STREAMED_INSTANCE_DEPRECATED_
303 requires(bsl::formattable<t_STREAMABLE, char>)
305 return Streamed<t_STREAMABLE>(
object, Streamed_NoWarningConstructorTag());
308template <
class t_STREAMABLE>
311 return Streamed<t_STREAMABLE>(
object);
320template <
class t_STREAMABLE>
324 BloombergLP::bslfmt::StreamedFormatter<t_STREAMABLE> d_formatter;
336 template <
class t_PARSE_CONTEXT>
338 t_PARSE_CONTEXT& parseContext)
340 return d_formatter.parse(parseContext);
350 template <
class t_FORMAT_CONTEXT>
351 typename t_FORMAT_CONTEXT::iterator
format(
352 const BloombergLP::bslfmt::Streamed<t_STREAMABLE>& value,
353 t_FORMAT_CONTEXT& formatContext)
const
355 return d_formatter.format(value.object(), formatContext);
361#undef BSLFMT_STREAMED_INSTANCE_DEPRECATED_
Definition bslfmt_streamed.h:153
Streamed(const t_STREAMABLE &object)
Definition bslfmt_streamed.h:283
const t_STREAMABLE & object() const
Return a non-modifiable reference to the wrapped object.
Definition bslfmt_streamed.h:260
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
#define BSLS_KEYWORD_CONSTEXPR_CPP20
Definition bsls_keyword.h:645
Definition bdlat_valuetypefunctions.h:939
Definition bslfmt_enablestreamedformatter.h:130
Streamed< t_STREAMABLE > streamed(const t_STREAMABLE &object)