Skip to content

clang-tidy modernize-use-default-member-init false negatives #122480

Open
@nick-potenski

Description

@nick-potenski

clang-tidy's modernize-use-default-member-init check will ignore constructor member initializers that either directly or indirectly use mathematical operations or casting. For instance, the following code only generates a warning for struct member a. Live example in compiler explorer here: https://godbolt.org/z/9E7Pv5jfa.

#define THE_ANSWER (44 - 2)

struct Bar {
    Bar() : a{0}, b{1 + 1}, c{THE_ANSWER}, d{static_cast<unsigned int>(-1)} {}
    int a;
    int b;
    int c;
    unsigned int d;
};
[<source>:5:9: warning: use default member initializer for 'a' [modernize-use-default-member-init]](javascript:;)
    4 |     Bar() : a{0}, b{1 + 1}, c{THE_ANSWER}, d{static_cast<unsigned int>(-1)} {}
      |             ~~~~
    5 |     int a;
      |         ^
      |          {0}
1 warning generated.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions