// bslmf_functionpointertraits_cpp03.h -*-C++-*- // Automatically generated file. **DO NOT EDIT** #ifndef INCLUDED_BSLMF_FUNCTIONPOINTERTRAITS_CPP03 #define INCLUDED_BSLMF_FUNCTIONPOINTERTRAITS_CPP03 //@PURPOSE: Provide C++03 implementation for bslmf_functionpointertraits.h // //@CLASSES: See bslmf_functionpointertraits.h for list of classes // //@SEE_ALSO: bslmf_functionpointertraits // //@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 Mon Dec 19 14:09:56 2022 // Command line: sim_cpp11_features.pl bslmf_functionpointertraits.h #ifdef COMPILING_BSLMF_FUNCTIONPOINTERTRAITS_H namespace BloombergLP { namespace bslmf { struct FunctionPointerCPlusPlusLinkage { // C++ function pointer linkage tag. }; struct FunctionPointerCLinkage { // C function pointer linkage tag. }; // =========================== // class FunctionPointerTraits // =========================== template <class t_PROTOTYPE> struct FunctionPointerTraits { // This class gives information about the specified 't_PROTOTYPE'. The // general definition gives no information, but specializations for // function pointers types define nested types 'ResultType', // 'ArgumentList', and 'Linkage'. enum { IS_FUNCTION_POINTER = 0 }; }; // ======================= // class IsFunctionPointer // ======================= template <class t_PROTOTYPE> struct IsFunctionPointer : bsl::integral_constant< bool, FunctionPointerTraits<t_PROTOTYPE>::IS_FUNCTION_POINTER> { // This template determines if the specified 't_PROTOTYPE' is a free (i.e., // non-member) function pointer. 'value' is defined as 1 if the specified // 't_PROTOTYPE' is a function pointer type, and a zero value otherwise. }; // ---- Anything below this line is implementation specific. Do not use. ---- #if defined(BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES) && \ !defined(BSLS_COMPILERFEATURES_SUPPORT_VARIADIC_TEMPLATES) // All of our compilers which identify 'noexcept' as part of the type // system (a C++17 piece of functionality) similarly also support variadic // templates, so we refrain from having the dead code to support this case. # error Feature not supported for compilers without variadic templates #endif // --------------------------- // class FunctionPointerTraits // --------------------------- #if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES // {{{ BEGIN GENERATED CODE // Command line: sim_cpp11_features.pl bslmf_functionpointertraits.h #ifndef BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT #define BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT 14 #endif #ifndef BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A #define BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT #endif #if defined(BSLS_PLATFORM_CMP_CLANG) && (!defined(BSLS_PLATFORM_OS_DARWIN) \ || BSLS_PLATFORM_CMP_VER_MAJOR > 130000) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-volatile" #endif #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 0 template <class t_BSLMF_RETURN> struct FunctionPointerTraits<t_BSLMF_RETURN (*)()> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 0 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 1 template <class t_BSLMF_RETURN, class t_ARGS_01> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 1 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 2 template <class t_BSLMF_RETURN, class t_ARGS_01, class t_ARGS_02> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 2 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 3 template <class t_BSLMF_RETURN, class t_ARGS_01, class t_ARGS_02, class t_ARGS_03> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 3 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 4 template <class t_BSLMF_RETURN, class t_ARGS_01, class t_ARGS_02, class t_ARGS_03, class t_ARGS_04> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 4 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 5 template <class t_BSLMF_RETURN, class t_ARGS_01, class t_ARGS_02, class t_ARGS_03, class t_ARGS_04, class t_ARGS_05> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 5 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 6 template <class t_BSLMF_RETURN, class t_ARGS_01, class t_ARGS_02, class t_ARGS_03, class t_ARGS_04, class t_ARGS_05, class t_ARGS_06> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 6 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 7 template <class t_BSLMF_RETURN, 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> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 7 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 8 template <class t_BSLMF_RETURN, 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> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 8 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 9 template <class t_BSLMF_RETURN, 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> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 9 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 10 template <class t_BSLMF_RETURN, 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> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 10 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 11 template <class t_BSLMF_RETURN, 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, class t_ARGS_11> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 11 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 12 template <class t_BSLMF_RETURN, 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, class t_ARGS_11, class t_ARGS_12> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 12 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 13 template <class t_BSLMF_RETURN, 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, class t_ARGS_11, class t_ARGS_12, class t_ARGS_13> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 13 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 14 template <class t_BSLMF_RETURN, 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, class t_ARGS_11, class t_ARGS_12, class t_ARGS_13, class t_ARGS_14> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13, t_ARGS_14)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13, t_ARGS_14>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13, t_ARGS_14); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 14 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 0 template <class t_BSLMF_RETURN> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 0 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 1 template <class t_BSLMF_RETURN, class t_ARGS_01> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 1 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 2 template <class t_BSLMF_RETURN, class t_ARGS_01, class t_ARGS_02> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 2 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 3 template <class t_BSLMF_RETURN, class t_ARGS_01, class t_ARGS_02, class t_ARGS_03> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 3 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 4 template <class t_BSLMF_RETURN, class t_ARGS_01, class t_ARGS_02, class t_ARGS_03, class t_ARGS_04> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 4 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 5 template <class t_BSLMF_RETURN, class t_ARGS_01, class t_ARGS_02, class t_ARGS_03, class t_ARGS_04, class t_ARGS_05> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 5 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 6 template <class t_BSLMF_RETURN, class t_ARGS_01, class t_ARGS_02, class t_ARGS_03, class t_ARGS_04, class t_ARGS_05, class t_ARGS_06> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 6 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 7 template <class t_BSLMF_RETURN, 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> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 7 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 8 template <class t_BSLMF_RETURN, 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> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 8 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 9 template <class t_BSLMF_RETURN, 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> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 9 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 10 template <class t_BSLMF_RETURN, 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> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 10 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 11 template <class t_BSLMF_RETURN, 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, class t_ARGS_11> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 11 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 12 template <class t_BSLMF_RETURN, 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, class t_ARGS_11, class t_ARGS_12> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 12 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 13 template <class t_BSLMF_RETURN, 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, class t_ARGS_11, class t_ARGS_12, class t_ARGS_13> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 13 #if BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 14 template <class t_BSLMF_RETURN, 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, class t_ARGS_11, class t_ARGS_12, class t_ARGS_13, class t_ARGS_14> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13, t_ARGS_14,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13, t_ARGS_14>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS_01, t_ARGS_02, t_ARGS_03, t_ARGS_04, t_ARGS_05, t_ARGS_06, t_ARGS_07, t_ARGS_08, t_ARGS_09, t_ARGS_10, t_ARGS_11, t_ARGS_12, t_ARGS_13, t_ARGS_14,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #endif // BSLMF_FUNCTIONPOINTERTRAITS_VARIADIC_LIMIT_A >= 14 #if defined(BSLS_PLATFORM_CMP_CLANG) #pragma clang diagnostic pop #endif #else // The generated code below is a workaround for the absence of perfect // forwarding in some compilers. #if defined(BSLS_PLATFORM_CMP_CLANG) && (!defined(BSLS_PLATFORM_OS_DARWIN) \ || BSLS_PLATFORM_CMP_VER_MAJOR > 130000) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-volatile" #endif template <class t_BSLMF_RETURN, class... t_ARGS> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS...>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; template <class t_BSLMF_RETURN, class... t_ARGS> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS...,...)> { enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 0 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS...>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS...,...); typedef FunctionPointerCPlusPlusLinkage Linkage; }; #if defined(BSLS_PLATFORM_CMP_CLANG) #pragma clang diagnostic pop #endif // }}} END GENERATED CODE #endif #if defined(BSLS_PLATFORM_CMP_MSVC) // Microsoft Visual C++ has a problem matching 'T * const' pointers to the // appropriate partial specialization, whereas it will match a 'T const' // specialization. We could use the Microsoft fix on all platforms, but why // instantiate more traits than necessary when testing pointer traits of // cv-qualified types that are not function pointers? template <class t_PROTOTYPE> struct FunctionPointerTraits<t_PROTOTYPE const> : FunctionPointerTraits<t_PROTOTYPE> { // This class gives information about the specified 't_PROTOTYPE'. The // general definition gives no information, but specializations for // function pointers types define nested types 'ResultType', // 'ArgumentList', and 'Linkage'. }; template <class t_PROTOTYPE> struct FunctionPointerTraits<t_PROTOTYPE volatile> : FunctionPointerTraits<t_PROTOTYPE> { // This class gives information about the specified 't_PROTOTYPE'. The // general definition gives no information, but specializations for // function pointers types define nested types 'ResultType', // 'ArgumentList', and 'Linkage'. }; template <class t_PROTOTYPE> struct FunctionPointerTraits<t_PROTOTYPE const volatile> : FunctionPointerTraits<t_PROTOTYPE> { // This class gives information about the specified 't_PROTOTYPE'. The // general definition gives no information, but specializations for // function pointers types define nested types 'ResultType', // 'ArgumentList', and 'Linkage'. }; #else template <class t_PROTOTYPE> struct FunctionPointerTraits<t_PROTOTYPE *const> : FunctionPointerTraits<t_PROTOTYPE *> { // This class gives information about the specified 't_PROTOTYPE'. The // general definition gives no information, but specializations for // function pointers types define nested types 'ResultType', // 'ArgumentList', and 'Linkage'. }; template <class t_PROTOTYPE> struct FunctionPointerTraits<t_PROTOTYPE *volatile> : FunctionPointerTraits<t_PROTOTYPE *> { // This class gives information about the specified 't_PROTOTYPE'. The // general definition gives no information, but specializations for // function pointers types define nested types 'ResultType', // 'ArgumentList', and 'Linkage'. }; template <class t_PROTOTYPE> struct FunctionPointerTraits<t_PROTOTYPE *const volatile> : FunctionPointerTraits<t_PROTOTYPE *> { // This class gives information about the specified 't_PROTOTYPE'. The // general definition gives no information, but specializations for // function pointers types define nested types 'ResultType', // 'ArgumentList', and 'Linkage'. }; // }}} END GENERATED CODE #endif #ifdef BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES #if defined(BSLS_PLATFORM_CMP_CLANG) #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-volatile" #endif template <class t_BSLMF_RETURN, class... t_ARGS> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS...) noexcept> { // Specialization for 'noexcept' function pointers that return // 't_BSLMF_RETURN' and accept a fixed number of arguments enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 1 }; enum { e_IS_VARARG = 0 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS...>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS...) noexcept; typedef FunctionPointerCPlusPlusLinkage Linkage; }; template <class t_BSLMF_RETURN, class... t_ARGS> struct FunctionPointerTraits<t_BSLMF_RETURN (*)(t_ARGS...,...) noexcept> { // Specialization for 'noexcept' function pointers that return // 't_BSLMF_RETURN' and accept variable (C-style varargs) number of // arguments enum { IS_FUNCTION_POINTER = 1, IS_NOEXCEPT = 1 }; enum { e_IS_VARARG = 1 }; typedef t_BSLMF_RETURN ResultType; typedef typename TypeList<t_ARGS...>::Type ArgumentList; typedef t_BSLMF_RETURN FuncType(t_ARGS...,...) noexcept; typedef FunctionPointerCPlusPlusLinkage Linkage; }; #if defined(BSLS_PLATFORM_CMP_CLANG) #pragma clang diagnostic pop #endif #endif // BSLS_COMPILERFEATURES_SUPPORT_NOEXCEPT_TYPES } // close package namespace #ifndef BDE_OPENSOURCE_PUBLICATION // BACKWARD_COMPATIBILITY // ============================================================================ // BACKWARD COMPATIBILITY // ============================================================================ typedef bslmf::FunctionPointerCPlusPlusLinkage bslmf_FunctionPointerCPlusPlusLinkage; // This alias is defined for backward compatibility. typedef bslmf::FunctionPointerCLinkage bslmf_FunctionPointerCLinkage; // This alias is defined for backward compatibility. #ifdef bslmf_FunctionPointerTraits #undef bslmf_FunctionPointerTraits #endif #define bslmf_FunctionPointerTraits bslmf::FunctionPointerTraits // This alias is defined for backward compatibility. #ifdef bslmf_IsFunctionPointer #undef bslmf_IsFunctionPointer #endif #define bslmf_IsFunctionPointer bslmf::IsFunctionPointer // This alias is defined for backward compatibility. #endif // BDE_OPENSOURCE_PUBLICATION -- BACKWARD_COMPATIBILITY } // close enterprise namespace #else // if ! defined(DEFINED_BSLMF_FUNCTIONPOINTERTRAITS_H) # error Not valid except when included from bslmf_functionpointertraits.h #endif // ! defined(COMPILING_BSLMF_FUNCTIONPOINTERTRAITS_H) #endif // ! defined(INCLUDED_BSLMF_FUNCTIONPOINTERTRAITS_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 ----------------------------------