Open
Description
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.