Обязан ли включать хедер (напрямую или косвенно)?

Надо ли включать хедер <ios> для std::ios_base, если уже включен хедер <fstream>?

Для хедера <iostream> в доках явно прописано, что <ios> включается. А для <fstream> -- нет.


Ответы (1 шт):

Автор решения: Fat-Zer

Надо ли включать хедер <ios> для std::ios_base, если уже включен хедер <fstream>?

Не обязательно. std::fstream (точнее его шаблонная версия) является потомком std::ios_base, поэтому by-design любой файл, в котором будет определение std::fstream, должен (вероятно, опосредованно) включать и определение std::ios_base, хотя будет ли это именно файл с именем <ios>, вообще говоря, не гарантируется.

→ Ссылка