This macro is intended to avoid the use of
automatic-recursion at deep expansion depths.
Automatic-recursion at such depths can be inefficient on some preprocessors.
It is not intended to be used directly with the invocation of macros with a
_R suffix such as:
このマクロは深い展開における
自動再帰の使用を避けるためにある。
いくつかのプリプロセッサでは、そのような深さでの
自動再帰は非効率的となり得る。
これは接尾辞
_R を持ったマクロの実行に直接使用されるためのものではない。例えば:
BOOST_PP_LIST_ENUM_R(BOOST_PP_DEDUCE_R(), (a, (b, (c, BOOST_PP_NIL))))
もしこのような文脈でこのマクロが使われた場合、
_R マクロは失敗するだろう。
_R マクロは渡されたパラメータ
r を直接、
BOOST_PP_DEDUCE_R() が展開されるのを邪魔して、結合する。
さらに言えば、このマクロをさきの例のような状況で使用するのは無意味である。
効率を得るにはすでに遅すぎるからだ。