Однажды на уроке программирования мне сказали, что C++ добился лучшей читабельности, позволив программисту объявлять свою переменную в любом месте функционального блока. Таким образом, переменные были сгруппированы вместе с разделом кода, который имел дело с ними.
Почему бы нам не сделать то же самое для включений? Иными словами, почему не рекомендуется помещать включаемый файл рядом с определением, которое на самом деле будет его использовать?
parser::parser()
{
// some initialization goes there which does not make use of regex
}
#include <boost/regex.hpp>
parser::start()
{
// here we need to use boost regex to parse the document
}