Subject: [boost] [type_traits] VC++ and vararg function/mmeber functions and varargs
From: Edward Diener (eldiener_at_[hidden])
Date: 2013-10-07 18:50:15
After going back and for with Mr. Lavavej from Microsoft about how VC++
treats functions/member functions which have varargs parameters and
calling conventions, I learned that VC++ always treats all these
function types as if the calling convention is __cdecl, no matter what
the end-user specifies.
Therefore attempting to match function and member function types taking
varargs, with VC++ and compatibles, by having to specify __cdecl,
__fastcall, and __stdcall calling conventions for every function/member
function declaration with varargs, is a waste since these are not
potential new types being tested by templates but just the same type
redeclared. These occur in type_traits/detail files
is_mem_fun_pointer_tester.hpp and is_mem_fun_pointer_tester.hpp when
BOOST_TT_TEST_MS_FUNC_SIGS ( essentially _MSC_EXTENSIONS) is defined.
I would like to remove these redundant declarations from these files. I
have made sure that my tests for VC++ pass. I will test Intel C++, if it
also emulates VC++ in this way.
Can I make the change on trunk to these files once I ascertain that
Intel C++ tests with type_traits also pass with this change ? Are there
any other VC++ emulation compilers that need to be tested ?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk