Хочется сгенерить такое:
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>>