C++ Boost预处理器-传递Boost_PP_ENUM_参数一个静态常量int?

C++ Boost预处理器-传递Boost_PP_ENUM_参数一个静态常量int?,c++,boost,boost-preprocessor,C++,Boost,Boost Preprocessor,我想要这样的东西: class MyClass { public: static const int n = some_traits_class<SomeClass>::value; template <BOOST_PP_ENUM_PARAMS(MyClass::n, typename P)> void operator()( BOOST_PP_ENUM_BINARY_PARAMS(MyClass::n, const P

我想要这样的东西:

class MyClass
{
    public:
       static const int n = some_traits_class<SomeClass>::value;

       template <BOOST_PP_ENUM_PARAMS(MyClass::n, typename P)>
       void operator()( BOOST_PP_ENUM_BINARY_PARAMS(MyClass::n, const P, & p) )
       {
          ....
       }
}
class-MyClass
{
公众:
静态常量int n=某些特性类::值;
模板
void操作符()
{
....
}
}

编译器似乎不喜欢这样——是否有某种修复方法可以达到我想要的位置?

否,
BOOST\u PP\u ENUM\u PARAMS
的第一个参数必须是一个整数:一个实际的整数标记或扩展为1的宏的名称


宏替换发生在编译器开始解析代码和计算整型常量表达式之前很久(在预处理期间计算的唯一常量表达式是那些出现在
#if
#elif
指令中的常量表达式,它们具有一组可使用的受限操作).

预处理器不知道变量。