2012-07-19 28 views
0

我想是這樣的:Boost預處理器 - 傳遞BOOST_PP_ENUM_PARAMS一個靜態常量int?

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

編譯器似乎並不喜歡這一點 - 是有某種固定的去的地步,我想是什麼?

+0

預處理器不知道變量。 – Xeo 2012-07-19 23:26:33

回答

0

不,BOOST_PP_ENUM_PARAMS的第一個參數必須是整數:實際整數標記或展開爲1的宏的名稱。編譯器開始分析代碼和評估積分常量表達式之前

宏替換髮生長(預處理期間評估的唯一常量表達式是那些出現在#if#elif指令,它具有有限的一組操作的可使用的)。