Skip to content

[dcl.fct.def.coroutine] p13 "xvalue of type T" where T is lvalue reference type #4870

Open
@xmh0511

Description

@xmh0511

When a coroutine is invoked, after initializing its parameters ([expr.call]), a copy is created for each coroutine parameter. For a parameter of type cv T, the copy is a variable of type cv T with automatic storage duration that is direct-initialized from an xvalue of type T referring to the parameter.

Since [expr.type] p1 says

If an expression initially has the type “reference to T” ([dcl.ref], [dcl.init.ref]), the type is adjusted to T prior to any further analysis.

When we say xvalue, the type of it should be a non-reference type. However, in [dcl.fct.def.coroutine] p13, T could be any type such as "lvalue reference type". How could an expression be an xvalue when it has an lvalue reference type? Regardless of [expr.type] p1 or a xvalue of lvalue reference type, [dcl.fct.def.coroutine] p13 conflict with both of them.

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