
[STL]
__vectorcall can be applied to member functions.
[Edward Diener]
http://msdn.microsoft.com/en-us/library/vstudio/dn375768%28v=vs.120%29.aspx "Using the /Gv compiler option causes each function in the module to compile as __vectorcall unless the function is a member function, is declared with a conflicting calling convention attribute, uses a vararg variable argument list, or has the name main."
That's different. What I said is that __vectorcall can be applied to member functions, i.e. directly. What MSDN is saying is that /Gv changes the default calling convention to __vectorcall for non-member functions, but doesn't affect member functions. As a library author, the behavior of the calling convention switches doesn't really matter. What a library needs to do is provide overloads/specializations for all possible calling conventions, whether they've been directly specified or are coming from a default. What the switches do force library authors to do is to explicitly mark *all* overloads/specializations - you can't leave one unmarked and then specify __stdcall/__fastcall/etc. for the others, because that'll result in duplicates under Gr/Gz/etc. (Except for varargs, which are completely immune to everything.) STL