Subject: Re: [boost] [type_traits] VC++ and vararg function/mmeber functions and varargs
From: Edward Diener (eldiener_at_[hidden])
Date: 2013-10-07 19:54:17
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
> 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 ?