clang-tidy错误地替换了typedef中的模板参数

时间:2018-08-21 00:16:12

标签: c++ clang-tidy

我仔细检查了我的代码库,发现一些typedef包括模板参数被具体类型错误地替换了。我设法通过此示例文件test.cc复制了至少一个此问题:

template <typename T>
struct Test
{
    typedef T test_1;
    typedef T test_2;
    typedef T test_3;
    typedef T test_4;
    typedef T test_5;
    typedef T test_6;
    typedef T test_7;
    typedef T test_8;
    typedef T test_9;
    typedef T test_10;
    typedef T test_11;
};

int main()
{
    Test<int> test;

    return 0;
}

在此文件上运行clang-tidy-6.0 -checks=modernize* test.cc会导致警告,将所有typedef替换为using,但是奇怪的是,第三和第四typedef将T替换为{ {1}}:

int

所有其余部分均具有/home/john/test/test.cc:6:2: warning: use 'using' instead of 'typedef' [modernize-use-using] typedef T test_3; ^~~~~~~~~~~~~~~~~ using test_3 = int /home/john/test/test.cc:7:2: warning: use 'using' instead of 'typedef' [modernize-use-using] typedef T test_4; ^~~~~~~~~~~~~~~~~ using test_4 = int ,正如预期的那样。由于某种原因,只有在有11个或更多的typedef时,才会出现这种情况。

这是一个已知的错误吗?有没有解决方法,所以我可以让clang-tidy自动应用修补程序而不会错误地替换一堆typedef?

0 个答案:

没有答案