Код: Выделить всё
ICIS_CopyInitКод: Выделить всё
ICIS_ListInitСуществует способ найти именно объявления полей с инициализацией копирования:
- match FieldDecl
- пропустить, если !hasInClassInitializer()
пропустить, если ICIS_CopyInit != getInClassInitStyle()< /li>
Но это выглядит неуклюже. Было бы нормально, если бы int test = 3;. Но такой подход, например, превратил бы инициализацию копии MyStruct m_data = MyStruct(1, 3); в MyStruct m_data{MyStruct(1, 3)};, что не лучше, поскольку по-прежнему позволяет сузить преобразование аргументов конструктора MyStruct.
Вместо этого я хотел бы иметь MyStruct m_data{1, 3};. Является ли создание строки замены кода для FixItHint::CreateReplacement(...) путем поиска и замены в строке объявления единственным, что я могу сделать? Или я могу использовать методы clang AST для создания такой замены кода?
Подробнее здесь: https://stackoverflow.com/questions/790 ... n-in-clang