[英]How to change c++ code to make clang-tidy modernize-use-transparent-functors happy
我们有以下使用 catch2 框架的 c++ 代码:
auto check2 = [](size_t exp, size_t val, auto comp) {
REQUIRE(comp(exp, val));
};
check2(10, 20, std::equal_to<size_t>{});
和 clang-tidy 生成以下
/test_lingua.cpp:1236:36: warning: prefer transparent functors 'equal_to<>' [modernize-use-transparent-functors]
check2(10, 20, std::equal_to<size_t>{});
^
对代码的任何(合理)更改都可以让 clang-tidy 高兴吗?
您只需更换
std::equal_to<size_t>{}
和
std::equal_to<>{}
(C++14 及以上,使用模板默认参数)或
std::equal_to{}
(C++17 及以上,使用 CTAD)。
这样就使用了std::equal_to<void>
,它一般比较任意类型的两个 arguments a
和b
,就好像通过a == b
(加上完美转发)。
它避免了必须再次指定正确的类型,因此您不必重复自己,这有时可能是错误的来源(例如,如果类型已更改但std::equal_to
模板参数未正确更新)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.