1. pubby
  2. smpl

Source

smpl / libdir / smpl / vocab / mpl / impl / sequence_word_pp.hpp

#ifndef SMPL_VOCAB_MPL_IMPL_SEQUENCE_WORD_PREREQUISITES_PP_HPP
  #error "prerequisites not included"
#endif

#ifndef SMPL_LIMIT_SIZE
  #error "undefined xmacro parameter: SMPL_LIMIT_SIZE"
#endif

#ifndef SMPL_WORD_NAME
  #error "undefined xmacro parameter: SMPL_WORD_NAME"
#endif

#ifndef SMPL_SEQUENCE_NAME
  #error "undefined xmacro parameter: SMPL_SEQUENCE_NAME"
#endif

#define SMPL_arg_num BOOST_PP_ITERATION()

template<
  #define SMPL_arg(z,n,data) typename T##n
    BOOST_PP_ENUM(SMPL_arg_num, SMPL_arg,)
  #undef SMPL_arg
>
struct SMPL_WORD_NAME<
  #define SMPL_arg(z,n,data) T##n
    BOOST_PP_ENUM(SMPL_arg_num, SMPL_arg,)
  #undef SMPL_arg
  BOOST_PP_COMMA_IF(SMPL_arg_num)
  #define SMPL_placeholder(z,n,data) ::smpl::impl::_
    BOOST_PP_ENUM(
      BOOST_PP_SUB(
        SMPL_LIMIT_SIZE,
        SMPL_arg_num),
      SMPL_placeholder,)
  #undef SMPL_placeholder
>
: ::smpl::vocab::push<
    SMPL_SEQUENCE_NAME<
      #define SMPL_arg(z,n,data) T##n
        BOOST_PP_ENUM(SMPL_arg_num, SMPL_arg,)
      #undef SMPL_arg
    >
  >
{};

#undef SMPL_arg_num