abseil-duration-subtraction.rst
1.28 KB
abseil-duration-subtraction
Checks for cases where subtraction should be performed in the
absl::Duration
domain. When subtracting two values, and the first one is
known to be a conversion from absl::Duration
, we can infer that the second
should also be interpreted as an absl::Duration
, and make that inference
explicit.
Examples:
// Original - Subtraction in the double domain
double x;
absl::Duration d;
double result = absl::ToDoubleSeconds(d) - x;
// Suggestion - Subtraction in the absl::Duration domain instead
double result = absl::ToDoubleSeconds(d - absl::Seconds(x));
// Original - Subtraction of two Durations in the double domain
absl::Duration d1, d2;
double result = absl::ToDoubleSeconds(d1) - absl::ToDoubleSeconds(d2);
// Suggestion - Subtraction in the absl::Duration domain instead
double result = absl::ToDoubleSeconds(d1 - d2);
Note: As with other clang-tidy
checks, it is possible that multiple fixes
may overlap (as in the case of nested expressions), so not all occurrences can
be transformed in one run. In particular, this may occur for nested subtraction
expressions. Running clang-tidy
multiple times will find and fix these
overlaps.