Я запустил clang-tidy для выбора моей кодовой базы и заметил несколько определений типов, включая некорректно замененные параметры шаблона на конкретные типы. Мне удалось повторить по крайней мере одну из этих проблем с этим файлом примера, 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
s, но, как ни странно, третий и четвертый typedefs заменяют T
с 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
Все остальные имеют T
, как и ожидалось. По какой-то причине такое поведение, по-видимому, происходит только при наличии 11 или более типов определений.
Это известная ошибка? Есть ли обходной путь, чтобы я мог clang-tidy автоматически применять исправления без неправильной замены набора typedefs?
Задача ещё не решена.
Других решений пока нет …