Full name of submitter: Brian Bi
Issue description: The following wording in [expr.call]/12 is an unnecessarily abstruse way of describing which arguments can be passed to an ellipsis:
[...] The lvalue-to-rvalue, array-to-pointer, and function-to-pointer standard conversions are performed on the argument expression. An argument that has type cv std::nullptr_t is converted to type void* ([conv.ptr]). After these conversions, if the argument does not have arithmetic, enumeration, pointer, pointer-to-member, or class type, the program is ill-formed. [...]
Prior to C++26, the only argument type that is not permitted is void. Since C++26, cv std::meta::info is also disallowed, but neither Clang nor GCC currently enforces this restriction and it is not clear whether it is intentionally disallowed.
Full name of submitter: Brian Bi
Issue description: The following wording in [expr.call]/12 is an unnecessarily abstruse way of describing which arguments can be passed to an ellipsis:
Prior to C++26, the only argument type that is not permitted is
void. Since C++26, cvstd::meta::infois also disallowed, but neither Clang nor GCC currently enforces this restriction and it is not clear whether it is intentionally disallowed.