Вероятно, не лучшая практика, так как это может быть трудно читать по сравнению с ванильным объявлением namespace
. Тем не менее, помните, что правила не всегда применяются повсеместно, и я уверен, что есть некоторый сценарий, когда макрос может значительно очистить вещи.
«Но я не смог найти STL-файлы, включая этот. Если он не включен, как его можно использовать?».
Все файлы, которые используют этот макрос, так или иначе включают yvals.h
. Например, <vector>
включает в себя <memory>
, который включает в себя <iterator>
, который включает в себя <xutility>
, который включает в себя <climits>
, который включает в себя <yvals.h>
. Цепочка может быть глубокой, но она включает в себя это в какой-то момент.
И я хочу уточнить, это относится только к этой конкретной реализации стандартной библиотеки; это никоим образом не стандартизировано.