Subject: Re: [boost] [type_traits] Variadic function pointer with __fastcall calling convention
From: Stephan T. Lavavej (stl_at_[hidden])
Date: 2013-10-05 16:02:34
> The problem from clang's perspective is that they must emulate this
> "feature" <g> to compile Boost type_traits. Their developers feel that
> Boost type_traits should not depend on this feature, ie. should not
> specify any VC++ calling conventions for varargs function or function
> template declarations.
I agree with clang's devs (because that's what VC's <type_traits> does).
> What I mean is that in VC++ the declarations are redundant, being the
> same template redeclared.
Right. So if you want to absorb all old-style varargs, you need only one overload/specialization.
> In this case clang either has to change to be like VC++
Oh, I thought clang was attempting to be VC-compatible here (like our copy of EDG for Intellisense does).
If clang is supposed to be VC-compatible, then they should treat varargs with calling conventions like VC does, and Boost should do what VC <type_traits> does (i.e. one overload/specialization with no calling convention - or __cdecl would work, I think).
If clang wants to be different from VC, then Boost should do something different for clang and VC.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk