Boost logo

Boost :

Subject: [boost] [type_traits] Variadic function pointer with __fastcall calling convention
From: Edward Diener (eldiener_at_[hidden])
Date: 2013-10-01 21:09:21


In type_traits/detail/is_function_ptr_tester.hpp there are pointer to
function signatures being tested which have the __fastcall calling
convention and variadic functions. While MSVC accepts this code clang in
Windows, which defines _MSC_VER and _MSC_EXTENSIONS, currently gives an
error. The justification for giving an error is that __fastcall is a
callee stack cleanup calling convention, so it cannot be used for
variadic functions.

There is a bug report regarding this in the Bugzilla for llvm at
http://llvm.org/bugs/show_bug.cgi?id=12535.

Comments have been made to me in e-mail and the clang developer's
mailing list that it is a type_traits error to allow this, even for
MSVC-emulation code. Of course we can temporarily fix this for clang on
Windows, possibly with a BOOST_WORKAROUND solution for clang and see
if/how clang eventually addresses the bug report. But I would like some
sort of resolution so that clang on Windows can compile type_traits in
the current Boost trunk.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk