3
使用現有的Boost Phoenix(佔位符)參數(例如_1
),我可以使用數組/下標運算符。例如,以下摘錄將顯示1
。使用Boost C++ Phoenix用戶定義參數的下標運算符[]錯誤
int arr[4] = {1,2,3,4};
std::cout << _1[0](arr) << std::endl;
但是,如果我定義自己的佔位符參數:
phoenix::actor<phoenix::expression::argument<1>::type> const my_1 = {{}};
雖然它工作正常縵(以下輸出7):
std::cout << my_1(7) << std::endl;
,如果我嘗試使用下標運算符(如上):
std::cout << my_1[0](arr) << std::endl;
我收到很多錯誤;總之,在G ++ 4.7.2中,模板參數推導失敗;與Clang 3.2,我被告知函數不能返回數組類型。
如何讓我的鳳凰佔位符參數支持下標運算符?
我看到'decltype(PHX :: arg_names :: _ 1)'同樣適用,雖然類型顯然是'const類型'。奇怪的是,decltype(phx :: arg_names :: _ 2)'也是如此。 – user2023370 2013-03-14 21:00:53
@ user2023370:除了它所在的範圍之外,'phx :: arg_names :: _ 1'的聲明與'my_1'的聲明完全相同,所以我當然希望這會起作用。 ; - ] – ildjarn 2013-03-14 21:14:16
好的。這只是我發現這個失敗:'static_assert(std :: is_same :: type,decltype(phx :: arg_names :: _ 1)> :: value,「」);' –
user2023370
2013-03-14 21:29:52