0

我想要这样的东西:

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) )
       {
          ....
       }
}

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

4

1 回答 1

0

不,第一个参数BOOST_PP_ENUM_PARAMS必须是一个整数:一个实际的整数标记或扩展为一个的宏的名称。

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

于 2012-07-19T23:29:38.193 回答