// bslmf_nthparameter_cpp03.h -*-C++-*- // Automatically generated file. **DO NOT EDIT** #ifndef INCLUDED_BSLMF_NTHPARAMETER_CPP03 #define INCLUDED_BSLMF_NTHPARAMETER_CPP03 //@PURPOSE: Provide C++03 implementation for bslmf_nthparameter.h // //@CLASSES: See bslmf_nthparameter.h for list of classes // //@SEE_ALSO: bslmf_nthparameter // //@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 Fri Dec 16 11:47:20 2022 // Command line: sim_cpp11_features.pl bslmf_nthparameter.h #ifdef COMPILING_BSLMF_NTHPARAMETER_H namespace BloombergLP { namespace bslmf { // =========================== // class template NthParameter // =========================== struct NthParameter_Sentinel; // Declared but not defined #if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES // {{{ BEGIN GENERATED CODE // Command line: sim_cpp11_features.pl bslmf_nthparameter.h #ifndef BSLMF_NTHPARAMETER_VARIADIC_LIMIT #define BSLMF_NTHPARAMETER_VARIADIC_LIMIT 15 #endif #ifndef BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A #define BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A BSLMF_NTHPARAMETER_VARIADIC_LIMIT #endif template <std::size_t t_N, class t_FIRST_PARAM = NthParameter_Sentinel #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 0 , class t_PARAMS_0 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 0 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 1 , class t_PARAMS_1 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 1 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 2 , class t_PARAMS_2 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 2 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 3 , class t_PARAMS_3 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 3 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 4 , class t_PARAMS_4 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 4 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 5 , class t_PARAMS_5 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 5 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 6 , class t_PARAMS_6 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 6 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 7 , class t_PARAMS_7 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 7 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 8 , class t_PARAMS_8 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 8 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 9 , class t_PARAMS_9 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 9 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 10 , class t_PARAMS_10 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 10 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 11 , class t_PARAMS_11 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 11 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 12 , class t_PARAMS_12 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 12 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 13 , class t_PARAMS_13 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 13 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 14 , class t_PARAMS_14 = BSLS_COMPILERFEATURES_NILT #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 14 , class = BSLS_COMPILERFEATURES_NILT> struct NthParameter; #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 0 template <std::size_t t_N, class t_FIRST_PARAM> struct NthParameter<t_N, t_FIRST_PARAM> { typedef typename NthParameter<t_N - 1>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 0 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 1 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01> { typedef typename NthParameter<t_N - 1, t_PARAMS_01>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 1 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 2 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 2 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 3 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 3 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 4 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 4 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 5 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 5 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 6 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 6 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 7 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 7 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 8 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 8 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 9 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 9 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 10 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 10 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 11 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10, class t_PARAMS_11> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 11 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 12 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10, class t_PARAMS_11, class t_PARAMS_12> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 12 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 13 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10, class t_PARAMS_11, class t_PARAMS_12, class t_PARAMS_13> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12, t_PARAMS_13> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12, t_PARAMS_13>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 13 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 14 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10, class t_PARAMS_11, class t_PARAMS_12, class t_PARAMS_13, class t_PARAMS_14> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12, t_PARAMS_13, t_PARAMS_14> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12, t_PARAMS_13, t_PARAMS_14>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 14 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 15 template <std::size_t t_N, class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10, class t_PARAMS_11, class t_PARAMS_12, class t_PARAMS_13, class t_PARAMS_14, class t_PARAMS_15> struct NthParameter<t_N, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12, t_PARAMS_13, t_PARAMS_14, t_PARAMS_15> { typedef typename NthParameter<t_N - 1, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12, t_PARAMS_13, t_PARAMS_14, t_PARAMS_15>::Type Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 15 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 0 template <class t_FIRST_PARAM> struct NthParameter<0, t_FIRST_PARAM> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 0 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 1 template <class t_FIRST_PARAM, class t_PARAMS_01> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 1 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 2 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 2 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 3 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 3 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 4 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 4 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 5 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 5 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 6 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 6 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 7 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 7 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 8 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 8 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 9 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 9 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 10 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 10 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 11 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10, class t_PARAMS_11> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 11 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 12 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10, class t_PARAMS_11, class t_PARAMS_12> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 12 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 13 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10, class t_PARAMS_11, class t_PARAMS_12, class t_PARAMS_13> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12, t_PARAMS_13> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 13 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 14 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10, class t_PARAMS_11, class t_PARAMS_12, class t_PARAMS_13, class t_PARAMS_14> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12, t_PARAMS_13, t_PARAMS_14> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 14 #if BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 15 template <class t_FIRST_PARAM, class t_PARAMS_01, class t_PARAMS_02, class t_PARAMS_03, class t_PARAMS_04, class t_PARAMS_05, class t_PARAMS_06, class t_PARAMS_07, class t_PARAMS_08, class t_PARAMS_09, class t_PARAMS_10, class t_PARAMS_11, class t_PARAMS_12, class t_PARAMS_13, class t_PARAMS_14, class t_PARAMS_15> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS_01, t_PARAMS_02, t_PARAMS_03, t_PARAMS_04, t_PARAMS_05, t_PARAMS_06, t_PARAMS_07, t_PARAMS_08, t_PARAMS_09, t_PARAMS_10, t_PARAMS_11, t_PARAMS_12, t_PARAMS_13, t_PARAMS_14, t_PARAMS_15> { typedef t_FIRST_PARAM Type; }; #endif // BSLMF_NTHPARAMETER_VARIADIC_LIMIT_A >= 15 #else // The generated code below is a workaround for the absence of perfect // forwarding in some compilers. template <std::size_t t_N, class t_FIRST_PARAM = NthParameter_Sentinel, class... t_PARAMS> struct NthParameter { typedef typename NthParameter<t_N - 1, t_PARAMS...>::Type Type; }; template <class t_FIRST_PARAM, class... t_PARAMS> struct NthParameter<0, t_FIRST_PARAM, t_PARAMS...> { typedef t_FIRST_PARAM Type; }; // }}} END GENERATED CODE #endif template <> struct NthParameter<0, NthParameter_Sentinel> { // Specialization of 'NthParameter' for when 't_N' exceeds the actual // number of parameters. #ifdef BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES // No 'Type' member is defined. #else // There are no dependent parameters because this is a full specialization. // When used in another simulated variadic template, the compiler may // attempt to evaluate the 'Type' member even when that client is not // actually instantiated. To avoid a spurious compilation error, we must // therefore make sure that 'Type' is defined, even if it is defined as an // incomplete class. typedef NthParameter_Sentinel Type; #endif }; } // close package namespace } // close enterprise namespace #else // if ! defined(DEFINED_BSLMF_NTHPARAMETER_H) # error Not valid except when included from bslmf_nthparameter.h #endif // ! defined(COMPILING_BSLMF_NTHPARAMETER_H) #endif // ! defined(INCLUDED_BSLMF_NTHPARAMETER_CPP03) // ---------------------------------------------------------------------------- // Copyright 2022 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 ----------------------------------