On 10/7/2013 6:50 PM, Edward Diener wrote:
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
Correction. This should be "is_function_ptr_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 ?