llvm / llvm-project / 37d72991c136244fe53be02f5af0ad643247a1e6 / . / clang-tools-extra / docs / clang-tidy / checks / abseil-duration-subtraction.rst

.. title:: clang-tidy - abseil-duration-subtraction | |

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: | |

.. code-block:: c++ | |

// 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. |