Члены класса, которые не зависят от параметров шаблонного класса, должны быть заданы в отдельном базовом классе.
Члены класса, которые не зависят от параметров шаблонного класса, должны быть заданы в отдельном базовом классе.
Чтобы получить доступ к члену шаблонного класса, необходимо инстанцировать шаблона. Если член не зависит от параметра шаблона, этот шаг инстанцирования не необходим. Например, члены anotherMember
и someotherMember
из этого шаблонного класса aClass
не зависьте от параметра T
:
template <typename T> class aClass { T aMember int anotherMember; int someotherMember }
aClass
. Чтобы избежать ненужного инстанцирования шаблона, не включайте эти члены в объявление шаблона.Включая этот член в объявлении шаблона также вызывает ненужное чрезмерное увеличение размера кода. Компиляторы генерируют отдельную копию шаблонного класса для каждого инстанцирования шаблона. Если член класса не зависит от параметра шаблона, идентичная копия этого члена создается для каждого инстанцирования шаблона.
Средство проверки отмечает элементы данных шаблонных классов, которые не зависят от параметров шаблона. Средство проверки не отмечает функции членства.
Если несколько элементов данных шаблона отмечаются этим средством проверки, создают базовый класс для шаблона, который агрегировал эти элементы данных.
В некоторых случаях вы не можете хотеть строго придерживаться этого правила. Например, если только один член шаблонного класса не зависит от параметра шаблона, вы не можете хотеть создавать отдельный базовый класс для этого члена. Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: шаблоны |
Категория: Консультация, Частично автоматизированная |