| .. title:: clang-tidy - modernize-use-transparent-functors |
| |
| modernize-use-transparent-functors |
| ================================== |
| |
| Prefer transparent functors to non-transparent ones. When using transparent |
| functors, the type does not need to be repeated. The code is easier to read, |
| maintain and less prone to errors. It is not possible to introduce unwanted |
| conversions. |
| |
| .. code-block:: c++ |
| |
| // Non-transparent functor |
| std::map<int, std::string, std::greater<int>> s; |
| |
| // Transparent functor. |
| std::map<int, std::string, std::greater<>> s; |
| |
| // Non-transparent functor |
| using MyFunctor = std::less<MyType>; |
| |
| It is not always a safe transformation though. The following case will be |
| untouched to preserve the semantics. |
| |
| .. code-block:: c++ |
| |
| // Non-transparent functor |
| std::map<const char *, std::string, std::greater<std::string>> s; |
| |
| Options |
| ------- |
| |
| .. option:: SafeMode |
| |
| If the option is set to non-zero, the check will not diagnose cases where |
| using a transparent functor cannot be guaranteed to produce identical results |
| as the original code. The default value for this option is `0`. |
| |
| This check requires using C++14 or higher to run. |