[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