Skip to content

[clang-tidy] Check request: don't use reset for a smart pointer to Resetable #120908

@denzor200

Description

@denzor200

Assume we have a user-defined type A:

struct A {
    void reset() { /* A's own logic to reset something */ }
};

And then this type was instantiated using std::unique_ptr (std::shared_ptr also acceptable):

auto a = std::make_unique<A>();

Since both std::unique_ptr and A have reset method with different meaning, it might be ambiguous to use them:

a->reset(); // performs the logic defined in A, "a" stays alive
a.reset();  // "a" becomes nullptr

It might be surprised for a programmer to call not the reset he expects(more over it might be bugproned), and it's easy to make such typo because the difference between . and -> really small.
Suppose the code above might be changed in a better(more clear) way:

a.get()->reset(); // performs the logic defined in A, "a" stays alive
a = nullptr; // "a" becomes nullptr

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions