Since FunctionTypeBitfields is already > 32 bits wide we might
as well stuff the remaining bits from FunctionProtoType into it.
The patch is very mechanical, but changes the maximum number of
parameters from 2^15-1 to 2^14-1 to fit into FunctionTypeBitfields,
This requires stealing 2 bits from the number of types in a dynamic
exception spec. The maximum number of types in a dynamic exception
spec is therefore limited to 127 (unless limited by something else in clang).
Also the member unsigned RefQualifier : 2; is moved in
FunctionTypeBitfields. This is intentional and done to avoid
the unsigned boundary.
This concerns me a bit with variadic templates. I realize implimits says 256 but IMO variadic templates makes this a fairly easy limit to hit. I guess that 4096 is probably sufficient, though I'd like to hear someone else's opinion.