是否有更好的方式转换为提升精神的大写?

时间:2012-03-14 18:32:42

标签: boost boost-spirit boost-phoenix

我为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;

然后在我的语义操作中使用该函数。

我想知道我是否可以在我的语义代码中使用某种单行代码(创建结构)?

谢谢!

1 个答案:

答案 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并不是更短,更轻。所以现在没有好的选择。