Skip to content

[clang-format] incorrect formatting with & qualifier and requires clause with multi-arg template #65904

@danakj

Description

@danakj

The first one has no & qualifier and is formatted correct.

The second one adds & and clang-format gets confused, I don't think it's aware this is a function anymore.

struct S {
    template <class... Args>
    constexpr void f()
        requires(true && C<true, Args...>)
    {
        return;
    }

    template <class... Args>
        constexpr void f() & requires(true && C<true, Args...>) { return; }
};

The const and const& qualifiers are parsed correctly. && is also incorrect.

struct S {
    template <class... Args>
    constexpr void f() const
        requires(true && C<true, Args...>)
    {
        return;
    }

    template <class... Args>
    constexpr void f() const&
        requires(true && C<true, Args...>)
    {
        return;
    }

    template <class... Args>
        constexpr void f() && requires(true && C<true, Args...>) { return; }
};

https://godbolt.org/z/qKTWec96e

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions