繁体   English   中英

如何更改 c++ 代码以使铿锵整洁的现代化使用透明函子开心

[英]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 ab ,就好像通过a == b (加上完美转发)。

它避免了必须再次指定正确的类型,因此您不必重复自己,这有时可能是错误的来源(例如,如果类型已更改但std::equal_to模板参数未正确更新)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM