[cfe-dev] clang for Windows problem in Boost.TypeTraits

Edward Diener eldlistmailingz at tropicsoft.com
Tue Oct 1 17:27:11 PDT 2013


On 10/1/2013 2:16 PM, Nico Rieck wrote:
> On 30.09.2013 05:29, Edward Diener wrote:
>> I could not find anything in the C++11 standard about variadic functions
>> and calling conventions. Is this a "bug" with clang under Windows or
>> should Boost.TypeTraits not try to allow __fastcall in this situation
>> when compiling with clang under Windows ?
>
> I think it's a defect in both. Boost should drop the overloaded vararg
> is_function_ptr_tester specializations with non-standard calling
> conventions as they are never used. When MSVC encounters a vararg
> function with stdcall/fastcall it silently converts it to cdecl.

is there a way to test that this is what it actually does ?

> Though
> for compatibility with (broken) MSVC code Clang should match that
> behavior if desired.

The issue is that MSVC will accept the declaration without a compiler 
error as part of its extensions no matter what it may silently do. So if 
clang in Windows also defines the _MSC_EXTENSIONS macro it should 
ideally emulate MSVC in that regard.

I will however mention in the Boost developers forum that it might be 
good to drop the overloaded vararg specializations with non-standard 
calling conventions for MSVC. Or Boost could decide to test for clang 
and not allow it when using clang.





More information about the cfe-dev mailing list