Как правило, такая функция, как макрос, может использоваться для предотвращения непреднамеренного макроса
расширение.
Например, предположим, что у нас есть следующий вызов макроса:
BOOST_PP_CAT( BOOST_PP_ITERATION, _DEPTH )
и мы ожидаем, что это будет расширено до BOOST_PP_ITERATION_DEPTH
.
Однако, если BOOST_PP_ITERATION
является подобным объекту (нефункциональным) макросом,
он будет расширен до своего собственного определения до токена
BOOST_PP_ITERATION_DEPTH
генерируется конкатенацией.