Skip to content

F.16 F.18 Consume and input parameters #526

Open
@adarnon

Description

@adarnon

Rule F.18 suggests you should always pass parameters by X&& and std::move them.
However, in the case where you have a function that receives multiple parameters and it keeps a copy of all of them (a constructor, maybe), I believe the better way is to pass them by value and then std::move them. This also saves you the trouble of adding a Cartesian product of overloads with const X&.

For example:

class Foo {
    Foo(std::vector<int> a, std::vector<int> b): _a(std::move(a)), _b(std::move(b)) {}
private:
    std::vector<int> _a;
    std::vector<int> _b;
};

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions