BOOST_PP_COUNTER

BOOST_PP_COUNTER を利用すると __COUNTER__ のような事が出来ます。 ただし、__COUNTER__ とは違い、マクロを呼び出す度に BOOST_PP_UPDATE_COUNTER() で更新してやる必要があります。

[コード]

#include <iostream>
#include <boost/preprocessor/slot/counter.hpp>

int
main(){
    int value = 0;
    value += BOOST_PP_COUNTER;
    #include BOOST_PP_UPDATE_COUNTER();

    value += BOOST_PP_COUNTER;
    #include BOOST_PP_UPDATE_COUNTER();

    value += BOOST_PP_COUNTER;
    #include BOOST_PP_UPDATE_COUNTER();

    value += BOOST_PP_COUNTER;
    #include BOOST_PP_UPDATE_COUNTER();

    std::cout << value << std::endl;
    // => 6
    return 0;
}

さすがに __COUNTER__ より手間そう。

[参照]