Skip to content

Move-assignment selects the wrong assignment operator #22

@jeffgarrett

Description

@jeffgarrett

The greedy assignment operator is missing a constraint against assigning from the same type.

using FR = tl::function_ref<void(void)>;
static_assert(std::is_trivially_assignable<FR, FR&>::value, "");       // fails
static_assert(std::is_trivially_assignable<FR, const FR&>::value, ""); // OK
static_assert(std::is_trivially_assignable<FR, FR&&>::value, "");      // fails

The constraint is in P0792r5.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions