我为struct
phoenix::function
struct to_upper_impl
{
template <typename T1>
struct result { typedef std::string type; };
std::string operator()(const std::string & s) const
{
return boost::algorithm::to_upper_copy(s);
}
};
boost::phoenix::function<to_upper_impl> to_upper;
然后在我的语义操作中使用该函数。
我想知道我是否可以在我的语义代码中使用某种单行代码(创建结构)?
谢谢!
答案 0 :(得分:1)
据我所知 - 不。到目前为止还没有其他方法可以将其他可调用类型作为参数传递给phoenix :: function。当我尝试使用它时,我尝试使用C ++ 11 lambdas并且因为Boost.ResultOf协议尝试使用某些参数调用phoenix :: function而失败。你可以在这个帖子中看到解释: Can't call a lazy lambda function with parameters via boost::phoenix::function。
使用boost(BLL)和phoenix lambdas并不是更短,更轻。所以现在没有好的选择。