Skip to content

CWG3204 [expr.call] Simplify restrictions on arguments for ellipsis parameters #918

Description

@t3nsor

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions