If you look at the increase, you will notice that they use a similar scheme:
#include <boost/shared_ptr.hpp>
This has the advantage of preventing collisions with another similarly named file from another dependency.
However, in case of increase, they do it one more step. If you include <x/y/z.hpp> , then you are likely to be dealing with an entity with the name ::x::y::z (whether it be a function or a class). That is, the path that directories lay out in the project mimics the organization of the namespace. It is pretty neat to navigate.
As a rule, most projects are hidden in subdirectories (and subspaces), but the most convenient ones are used in the boost namespace, and therefore they have headers that live directly in the boost folder. There are also some convenience headers (whose task is to collect a small number of other headers to pull them out right away).
Finally, you may notice that if you open the header file than the ones they use, follow the same hierarchy :
#ifndef BOOST_SHARED_PTR_HPP_INCLUDED
again, because it helps to avoid collisions, since it is named after the file itself, and there can be only one in this place in the entire Boost project (in the case of case-sensitive file systems).
source share