Skip to content

Description for two non-static member declarations to determine whether they correspond #4546

Closed
@xmh0511

Description

@xmh0511

The basic.scope#scope-3.3.1 says

both declare functions with the same parameter-type-list, equivalent ([temp.over.link]) trailing requires-clauses (if any, except as specified in [temp.friend]), and, if both are non-static members, the same cv-qualifiers (if any) and ref-qualifier (if both have one)

The above rule could be understood to, For two non-static member functions with the same parameter-type-list, if anyone has a cv-qualifiers then both declarations should have the same cv-qualifiers; if both declarations have ref-qualifier, they should have the same ref-qualifier. Otherwise, they do not correspond.

struct A{
    void show();  //#1
    void show() const &;  //#2
};

In this snippet, Does #1 correspond to #2? Since #2 has a cv-qualifier but #1 does not have, even if the condition for having the same ref-qualifier is true, as per the rule(note the emphasized and in that rule), they do not correspond. So why couldn't they overload if per the draft? After all, the section over.load#2.3 was removed by P1787.

Activity

changed the title [-]Description about two non-static member declarations that correspond[/-] [+]Description for two non-static member declarations to determine whether they correspond[/+] on Mar 15, 2021
jensmaurer

jensmaurer commented on Mar 15, 2021

@jensmaurer
Member

That looks like a core issue to me.

http://lists.isocpp.org/core/2021/03/10637.php

jensmaurer

jensmaurer commented on Mar 15, 2021

@jensmaurer
Member

This arrived with P1787R6. The wording thus is new, and compilers haven't caught up yet.

https://lists.isocpp.org/core/2020/11/10201.php

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cwgIssue must be reviewed by CWG.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @xmh0511@jensmaurer

        Issue actions

          Description for two non-static member declarations to determine whether they correspond · Issue #4546 · cplusplus/draft