modernize-use-transparent-functors¶
优先使用透明仿函数而不是非透明仿函数。使用透明仿函数时,无需重复类型。代码更易于阅读、维护,且错误更少。不会引入意外的转换。
// 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>;
但是,它并不总是安全的转换。以下情况将保持不变以保留语义。
// Non-transparent functor
std::map<const char *, std::string, std::greater<std::string>> s;
选项¶
- SafeMode¶
如果将此选项设置为 true,则检查将不会诊断使用透明仿函数无法保证产生与原始代码相同结果的情况。此选项的默认值为 false。
此检查需要使用 C++14 或更高版本才能运行。