Как быть, если аргументы BOOST_PP_IF - макросы?
От: enji  
Дата: 25.08.10 05:32
Оценка:
Хочется сгенерить такое:

void f();
template<class A1> void f(A1 a1);
template<class A1, class A2> void f(A1 a1, A2 a2);
...


Пытаюсь так:

#define PRINT(Z, N, DATA) \
  BOOST_PP_IF(N, template <BOOST_PP_ENUM_PARAMS_Z(Z, N, class A)>, BOOST_PP_EMPTY()) \
  void f(BOOST_PP_ENUM_BINARY_PARAMS_Z(Z, N, A, a));
  
BOOST_PP_REPEAT(5, PRINT, ~)


но не работает. Если убрать IF и void f() без параметров прописать руками, то все нормально:

void f();
#define PRINT(Z, N, DATA) \
  template <BOOST_PP_ENUM_PARAMS_Z(Z, N, class A)> \
  void f(BOOST_PP_ENUM_BINARY_PARAMS_Z(Z, N, A, a));
  
BOOST_PP_REPEAT(5, PRINT, ~)


Можно ли как-то извернуться с IF?
... << RSDN@Home 1.2.0 alpha 4 rev. 1476>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.