2011-06-22 145 views
0

我在編譯以下內容時遇到了問題(我是融合新手)。特別是,我不確定「_」(在is_same中)來自哪裏?從boost :: lambda?升壓:: MPL?我需要什麼來編譯?提升融合問題

template <typename T> 
struct check 
{ 
    const T& value; 

    check(const T& v) : value(v) {} 

    template <typename X> 
    bool operator()(const fusion::pair<X,T>& data) const 
    { 
    return data.second == value; 
    } 
}; 

template <typename T1, typename T2, typename P> 
bool new_match(const P& p, const T2& values) 
{ 
    fusion::for_each(fusion::filter_if<boost::is_same<_, T2> >(p), check(values)); 
    return true; // not finished, just trying to compile 
} 

謝謝!

回答

3

是的,確實,就是要boost::mpl::_,如the fusion::filter_if documentation證明,所以你應該只需要#include <boost/mpl/placeholders.hpp>和資格或using聲明帶來_到範圍。

+0

我只是閱讀文檔,並且只看到了介紹中的示例...我沒有檢查filter_if的ref :-(感謝您的指針!:-) – Frank

+0

@Frank:不用擔心。 : - ]公平地說,Fusion文檔明確地假定了MPL的深度先驗知識,並經常混合來自兩個庫的符號而沒有太多解釋。 – ildjarn