[#BloombergLP-bslstl-Function_Variadic-0e] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslstl.adoc[bslstl]::Function_Variadic :relfileprefix: ../../ :mrdocs: This component‐private class template contains the physical representation and provides the variadic interfaces for `bsl::function`. == Synopsis Declared in `<bslstl_function.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class PROTOTYPE> class Function_Variadic; ---- == Specializations [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslstl/Function_Variadic-08.adoc[`Function_Variadic<RET(ARGS...)>`] | This component‐private class template contains the physical representation and provides the variadic interfaces for `bsl::function` (see class and component documentation for `bsl::function`). `bsl::function` publicly inherits from an instantiation of this template. This implementation class exists to 1) minimize the amount of variadic template expansion required in C++03 using the `sim_cpp11_features.pl` utility and 2) work around issues with the Sun CC compiler, which has trouble with argument type deduction when a template argument has a partial specialization (as `Function_Variadic` does). `bsl::function` does not have a partial specialization and delegates to the `Function_Variadic` base class only those parts of the interface and implementation that depend on decomposing the function prototype into a return type and variadic list of argument types. |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:bsl/function-0a.adoc[`function`] | Forward declaration. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#