// bslfmt_print_imp_cpp03.h                                           -*-C++-*-

// Automatically generated file.  **DO NOT EDIT**

#ifndef INCLUDED_BSLFMT_PRINT_IMP_CPP03
#define INCLUDED_BSLFMT_PRINT_IMP_CPP03

//@PURPOSE: Provide C++03 implementation for bslfmt_print_imp.h
//
//@CLASSES: See bslfmt_print_imp.h for list of classes
//
//@SEE_ALSO: bslfmt_print_imp
//
//@DESCRIPTION:  This component is the C++03 translation of a C++11 component,
// generated by the 'sim_cpp11_features.pl' program.  If the original header
// contains any specially delimited regions of C++11 code, then this generated
// file contains the C++03 equivalent, i.e., with variadic templates expanded
// and rvalue-references replaced by 'bslmf::MovableRef' objects.  The header
// code in this file is designed to be '#include'd into the original header
// when compiling with a C++03 compiler.  If there are no specially delimited
// regions of C++11 code, then this header contains no code and is not
// '#include'd in the original header.
//
// Generated on Wed Dec 24 08:50:27 2025
// Command line: sim_cpp11_features.pl bslfmt_print_imp.h

#ifdef COMPILING_BSLFMT_PRINT_IMP_H

#if defined(BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES) &&                 \
    defined(BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES)
# define BSLFMT_FORMAT_STRING_PARAMETER bsl::format_string<t_ARGS...>
#else
// We cannot define format_string<t_ARGS...> in a C++03 compliant manner, so
// have to use non-template versions instead.
# define BSLFMT_FORMAT_STRING_PARAMETER bsl::format_string
#endif

namespace BloombergLP {
namespace bslfmt {

                              // --------------
                              // FREE FUNCTIONS
                              // --------------

#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
// {{{ BEGIN GENERATED CODE
// Command line: sim_cpp11_features.pl bslfmt_print_imp.h
#ifndef BSLFMT_PRINT_IMP_VARIADIC_LIMIT
#define BSLFMT_PRINT_IMP_VARIADIC_LIMIT 10
#endif
#ifndef BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A
#define BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A BSLFMT_PRINT_IMP_VARIADIC_LIMIT
#endif
#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 0
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 0

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 1
template <class t_ARGS_01>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 1

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 2
template <class t_ARGS_01,
          class t_ARGS_02>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 2

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 3
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 3

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 4
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 4

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 5
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 5

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 6
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 6

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 7
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 7

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 8
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 8

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 9
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 9

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 10
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09,
          class t_ARGS_10>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_10) args_10);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 10


#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 0
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 0

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 1
template <class t_ARGS_01>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 1

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 2
template <class t_ARGS_01,
          class t_ARGS_02>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 2

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 3
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 3

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 4
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 4

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 5
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 5

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 6
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 6

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 7
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 7

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 8
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 8

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 9
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 9

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 10
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09,
          class t_ARGS_10>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_10) args_10);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 10


#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 0
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 0

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 1
template <class t_ARGS_01>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 1

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 2
template <class t_ARGS_01,
          class t_ARGS_02>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 2

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 3
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 3

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 4
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 4

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 5
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 5

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 6
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 6

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 7
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 7

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 8
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 8

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 9
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 9

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 10
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09,
          class t_ARGS_10>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09,
                         BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_10) args_10);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 10


#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 0
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 0

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 1
template <class t_ARGS_01>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 1

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 2
template <class t_ARGS_01,
          class t_ARGS_02>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 2

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 3
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 3

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 4
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 4

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 5
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 5

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 6
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 6

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 7
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 7

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 8
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 8

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 9
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 9

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 10
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09,
          class t_ARGS_10>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_10) args_10);
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_A >= 10

#else
// The generated code below is a workaround for the absence of perfect
// forwarding in some compilers.
template <class... t_ARGS>
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                            BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS)... args);

template <class... t_ARGS>
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS)... args);

template <class... t_ARGS>
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                            BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS)... args);

template <class... t_ARGS>
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS)... args);
// }}} END GENERATED CODE
#endif

/// Write '\n' into `stdout`.
void println();

/// Write '\n' to the specified `stream`.  The behavior is undefined unless
/// `stream` is a valid pointer to an output C stream.
void println(std::FILE *stream);

/// Format the specified `args` using `bsl::vformat_to` according to the
/// specification given by the specified `fmt`, and write the result of this
/// operation to `stdout`.  In the event of formatting error throw the
/// exception `format_error`, in the event of I/O error throw the exception
/// `system_error`, on allocation failure throw `bad_alloc`.
void vprint_nonunicode(bsl::string_view fmt, bsl::format_args args);

/// Format the specified `args` using `bsl::vformat_to` according to the
/// specification given by the specified `fmt`, and write the result of this
/// operation to the specified `stream`.  In the event of formatting error
/// throw the exception `format_error`, in the event of I/O error throw the
/// exception `system_error`, on allocation failure throw `bad_alloc`.  The
/// behavior is undefined unless `stream` is a valid pointer to an output C
/// stream.
void vprint_nonunicode(std::FILE        *stream,
                       bsl::string_view  fmt,
                       bsl::format_args  args);

/// Format the specified `args` using `bsl::vformat_to` according to the
/// specification given by the specified `fmt` to a temporary buffer, and write
/// the resulting buffer to the specified `stream`.  In the event of formatting
/// error throw the exception `format_error`, in the event of I/O error throw
/// the exception `system_error`, on allocation failure throw `bad_alloc`.  The
/// behavior is undefined unless `stream` is a valid pointer to an output C
/// stream.
void vprint_nonunicode_buffered(std::FILE        *stream,
                                bsl::string_view  fmt,
                                bsl::format_args  args);

/// Format the specified `args` using `bsl::vformat_to` according to the
/// specification given by the specified `fmt`, and write the result of this
/// operation to `stdout`.  In the event of formatting error throw the
/// exception `format_error`, in the event of I/O error throw the exception
/// `system_error`, on allocation failure throw `bad_alloc`.
void vprint_unicode(bsl::string_view fmt, bsl::format_args args);

/// Format the specified `args` using `bsl::vformat_to` according to the
/// specification given by the specified `fmt`, and write the result of this
/// operation to the specified `stream`.  In the event of formatting error
/// throw the exception `format_error`, in the event of I/O error throw the
/// exception `system_error`, on allocation failure throw `bad_alloc`.  The
/// behavior is undefined unless `stream` is a valid pointer to an output C
/// stream.
void vprint_unicode(std::FILE        *stream,
                    bsl::string_view  fmt,
                    bsl::format_args args);

/// Format the specified `args` using `bsl::vformat_to` according to the
/// specification given by the specified `fmt` to a temporary buffer, and write
/// the resulting buffer to the specified `stream`.  In the event of formatting
/// error throw the exception `format_error`, in the event of I/O error throw
/// the exception `system_error`, on allocation failure throw `bad_alloc`.  The
/// behavior is undefined unless `stream` is a valid pointer to an output C
/// stream.
void vprint_unicode_buffered(std::FILE        *stream,
                             bsl::string_view  fmt,
                             bsl::format_args  args);

/// Throw `system_error` with `errc::io_error`.
void Print_Imp_ThrowIoError();

// ============================================================================
//                              INLINE DEFINITIONS
// ============================================================================

                              // --------------
                              // FREE FUNCTIONS
                              // --------------

#if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES
// {{{ BEGIN GENERATED CODE
// Command line: sim_cpp11_features.pl bslfmt_print_imp.h
#ifndef BSLFMT_PRINT_IMP_VARIADIC_LIMIT
#define BSLFMT_PRINT_IMP_VARIADIC_LIMIT 10
#endif
#ifndef BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B
#define BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B BSLFMT_PRINT_IMP_VARIADIC_LIMIT
#endif
#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 0
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args());
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 0

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 1
template <class t_ARGS_01>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args_01));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 1

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 2
template <class t_ARGS_01,
          class t_ARGS_02>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args_01,
                                                             args_02));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 2

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 3
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args_01,
                                                             args_02,
                                                             args_03));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 3

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 4
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args_01,
                                                             args_02,
                                                             args_03,
                                                             args_04));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 4

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 5
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args_01,
                                                             args_02,
                                                             args_03,
                                                             args_04,
                                                             args_05));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 5

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 6
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args_01,
                                                             args_02,
                                                             args_03,
                                                             args_04,
                                                             args_05,
                                                             args_06));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 6

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 7
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args_01,
                                                             args_02,
                                                             args_03,
                                                             args_04,
                                                             args_05,
                                                             args_06,
                                                             args_07));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 7

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 8
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args_01,
                                                             args_02,
                                                             args_03,
                                                             args_04,
                                                             args_05,
                                                             args_06,
                                                             args_07,
                                                             args_08));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 8

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 9
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args_01,
                                                             args_02,
                                                             args_03,
                                                             args_04,
                                                             args_05,
                                                             args_06,
                                                             args_07,
                                                             args_08,
                                                             args_09));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 9

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 10
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09,
          class t_ARGS_10>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_10) args_10)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args_01,
                                                             args_02,
                                                             args_03,
                                                             args_04,
                                                             args_05,
                                                             args_06,
                                                             args_07,
                                                             args_08,
                                                             args_09,
                                                             args_10));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 10


#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 0
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt)
{
    bslfmt::print(stdout, fmt);
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 0

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 1
template <class t_ARGS_01>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01)
{
    bslfmt::print(stdout, fmt,
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01, args_01));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 1

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 2
template <class t_ARGS_01,
          class t_ARGS_02>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02)
{
    bslfmt::print(stdout, fmt,
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01, args_01),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02, args_02));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 2

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 3
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03)
{
    bslfmt::print(stdout, fmt,
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01, args_01),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02, args_02),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03, args_03));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 3

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 4
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04)
{
    bslfmt::print(stdout, fmt,
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01, args_01),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02, args_02),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03, args_03),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04, args_04));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 4

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 5
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05)
{
    bslfmt::print(stdout, fmt,
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01, args_01),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02, args_02),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03, args_03),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04, args_04),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05, args_05));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 5

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 6
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06)
{
    bslfmt::print(stdout, fmt,
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01, args_01),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02, args_02),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03, args_03),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04, args_04),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05, args_05),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_06, args_06));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 6

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 7
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07)
{
    bslfmt::print(stdout, fmt,
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01, args_01),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02, args_02),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03, args_03),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04, args_04),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05, args_05),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_06, args_06),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_07, args_07));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 7

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 8
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08)
{
    bslfmt::print(stdout, fmt,
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01, args_01),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02, args_02),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03, args_03),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04, args_04),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05, args_05),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_06, args_06),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_07, args_07),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_08, args_08));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 8

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 9
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09)
{
    bslfmt::print(stdout, fmt,
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01, args_01),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02, args_02),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03, args_03),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04, args_04),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05, args_05),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_06, args_06),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_07, args_07),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_08, args_08),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_09, args_09));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 9

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 10
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09,
          class t_ARGS_10>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_10) args_10)
{
    bslfmt::print(stdout, fmt,
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01, args_01),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02, args_02),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03, args_03),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04, args_04),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05, args_05),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_06, args_06),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_07, args_07),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_08, args_08),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_09, args_09),
                            BSLS_COMPILERFEATURES_FORWARD(t_ARGS_10, args_10));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 10


#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 0
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args()));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 0

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 1
template <class t_ARGS_01>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args_01)));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 1

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 2
template <class t_ARGS_01,
          class t_ARGS_02>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args_01,
                                                                args_02)));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 2

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 3
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args_01,
                                                                args_02,
                                                                args_03)));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 3

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 4
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args_01,
                                                                args_02,
                                                                args_03,
                                                                args_04)));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 4

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 5
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args_01,
                                                                args_02,
                                                                args_03,
                                                                args_04,
                                                                args_05)));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 5

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 6
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args_01,
                                                                args_02,
                                                                args_03,
                                                                args_04,
                                                                args_05,
                                                                args_06)));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 6

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 7
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args_01,
                                                                args_02,
                                                                args_03,
                                                                args_04,
                                                                args_05,
                                                                args_06,
                                                                args_07)));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 7

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 8
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args_01,
                                                                args_02,
                                                                args_03,
                                                                args_04,
                                                                args_05,
                                                                args_06,
                                                                args_07,
                                                                args_08)));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 8

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 9
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args_01,
                                                                args_02,
                                                                args_03,
                                                                args_04,
                                                                args_05,
                                                                args_06,
                                                                args_07,
                                                                args_08,
                                                                args_09)));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 9

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 10
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09,
          class t_ARGS_10>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_10) args_10)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args_01,
                                                                args_02,
                                                                args_03,
                                                                args_04,
                                                                args_05,
                                                                args_06,
                                                                args_07,
                                                                args_08,
                                                                args_09,
                                                                args_10)));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 10


#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 0
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt)
{
    bslfmt::println(stdout, fmt);
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 0

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 1
template <class t_ARGS_01>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01,
                                 args_01));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 1

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 2
template <class t_ARGS_01,
          class t_ARGS_02>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01,
                                 args_01),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02,
                                 args_02));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 2

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 3
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01,
                                 args_01),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02,
                                 args_02),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03,
                                 args_03));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 3

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 4
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01,
                                 args_01),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02,
                                 args_02),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03,
                                 args_03),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04,
                                 args_04));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 4

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 5
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01,
                                 args_01),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02,
                                 args_02),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03,
                                 args_03),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04,
                                 args_04),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05,
                                 args_05));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 5

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 6
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01,
                                 args_01),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02,
                                 args_02),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03,
                                 args_03),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04,
                                 args_04),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05,
                                 args_05),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_06,
                                 args_06));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 6

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 7
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01,
                                 args_01),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02,
                                 args_02),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03,
                                 args_03),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04,
                                 args_04),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05,
                                 args_05),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_06,
                                 args_06),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_07,
                                 args_07));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 7

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 8
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01,
                                 args_01),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02,
                                 args_02),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03,
                                 args_03),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04,
                                 args_04),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05,
                                 args_05),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_06,
                                 args_06),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_07,
                                 args_07),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_08,
                                 args_08));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 8

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 9
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01,
                                 args_01),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02,
                                 args_02),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03,
                                 args_03),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04,
                                 args_04),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05,
                                 args_05),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_06,
                                 args_06),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_07,
                                 args_07),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_08,
                                 args_08),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_09,
                                 args_09));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 9

#if BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 10
template <class t_ARGS_01,
          class t_ARGS_02,
          class t_ARGS_03,
          class t_ARGS_04,
          class t_ARGS_05,
          class t_ARGS_06,
          class t_ARGS_07,
          class t_ARGS_08,
          class t_ARGS_09,
          class t_ARGS_10>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_01) args_01,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_02) args_02,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_03) args_03,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_04) args_04,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_05) args_05,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_06) args_06,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_07) args_07,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_08) args_08,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_09) args_09,
                          BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS_10) args_10)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS_01,
                                 args_01),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_02,
                                 args_02),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_03,
                                 args_03),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_04,
                                 args_04),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_05,
                                 args_05),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_06,
                                 args_06),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_07,
                                 args_07),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_08,
                                 args_08),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_09,
                                 args_09),
                                 BSLS_COMPILERFEATURES_FORWARD(t_ARGS_10,
                                 args_10));
}
#endif  // BSLFMT_PRINT_IMP_VARIADIC_LIMIT_B >= 10

#else
// The generated code below is a workaround for the absence of perfect
// forwarding in some compilers.
template <class... t_ARGS>
inline
void print(std::FILE                      *stream,
           BSLFMT_FORMAT_STRING_PARAMETER  fmt,
           BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS)... args)
{
    bslfmt::vprint_nonunicode_buffered(stream,
                                       fmt.get(),
                                       bsl::make_format_args(args...));
}

template <class... t_ARGS>
inline
void print(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS)... args)
{
    bslfmt::print(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS, args)...);
}

template <class... t_ARGS>
inline
void println(std::FILE                      *stream,
             BSLFMT_FORMAT_STRING_PARAMETER  fmt,
             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS)... args)
{
    bslfmt::print(stream,
                  "{}\n",
                  bsl::vformat(fmt.get(), bsl::make_format_args(args...)));
}

template <class... t_ARGS>
inline
void println(BSLFMT_FORMAT_STRING_PARAMETER fmt,
                             BSLS_COMPILERFEATURES_FORWARD_REF(t_ARGS)... args)
{
    bslfmt::println(stdout, fmt, BSLS_COMPILERFEATURES_FORWARD(t_ARGS,
                                 args)...);
}
// }}} END GENERATED CODE
#endif

inline
void println()
{
    bslfmt::println(stdout);
}

inline
void vprint_nonunicode(bsl::string_view fmt, bsl::format_args args)
{
    return bslfmt::vprint_nonunicode(stdout, fmt, args);
}

inline
void vprint_unicode(bsl::string_view fmt, bsl::format_args args)
{
    return bslfmt::vprint_unicode(stdout, fmt, args);
}

}  // close package namespace
}  // close enterprise namespace

#undef BSLFMT_FORMAT_STRING_PARAMETER

#else // if ! defined(DEFINED_BSLFMT_PRINT_IMP_H)
# error Not valid except when included from bslfmt_print_imp.h
#endif // ! defined(COMPILING_BSLFMT_PRINT_IMP_H)

#endif // ! defined(INCLUDED_BSLFMT_PRINT_IMP_CPP03)

// ----------------------------------------------------------------------------
// Copyright 2025 Bloomberg Finance L.P.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ----------------------------- END-OF-FILE ----------------------------------
