Skip to content

[meta.reflection.queries] [dcl.fct] Disagreement about whether int()const is const qualified #9239

Description

@Halalaluyafail3

In [dcl.fct] there exists the following note:

A function type that has a cv-qualifier-seq is not a cv-qualified type; there are no cv-qualified function types.

However, [meta.reflection.queries] has the following wording for std::meta::is_const and std::meta::is_volatile:

Returns: true if T represents a const or volatile type, respectively, or a const- or volatile-qualified function type, respectively. Otherwise, false.

The former states that there are no cv-qualified function types, while the latter is directly implying the possibility of cv-qualified function types (otherwise the second half of the first sentence would be redundant). It is quite clear what the latter is trying to state, that is_const(^^int()const) should be true. But if int()const really is a const qualified type, then std::is_const_v<int()const> should be true too which is obviously not intended.

Also, the subsequent definition of std::meta::is_lvalue_reference_qualified and std::meta::is_rvalue_reference_qualified contains:

Returns: true if T represents an lvalue- or rvalue-qualified function type, respectively. Otherwise, false.

The intent here is clear too but "lvalue-qualified" and "rvalue-qualified" do not get used anywhere else.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions