Можно ли не включать, если я не использую его функции?
Нет.Не использовать функции недостаточно.
Кроме того, не используя функции, вы также не должны использовать другие объявления, такие как переменные (например, std::cerr
), шаблоны и типы.Кроме того, «использование» в этом контексте означает любое упоминание объявленных идентификаторов - то, что конкретная ветвь не будет взята во время выполнения, не означает, что код не должен быть правильно сформирован.Несколько шаблонов объявлены в <iosfwd>
и поэтому могут использоваться ограниченным образом без включения их определения.
Я хотел бы оптимизировать этот код:
Ваша программане имеет поведения во время выполнения, поэтому вы можете оптимизировать его до:
// nothing