3

为什么这句话在 C++ 中有效?

qi::rule<Iterator, std::string(), skipper<Iterator> > name;

从这里提取:

规则的定义(恢复)如下:

template <typename Iterator, typename T1, typename T2,
                             typename T3, typename T4>
struct rule : boost::proto::extends<bla, bla>, parser<bla, bla>
{
  bla, bla
};

从这里提取:

规则定义需要一个类型,但是我向它发送一个对象。有可能的?

4

2 回答 2

3

你没有给它一个对象。std::string()是不带参数并返回std::string.

于 2012-11-20T11:58:48.817 回答
3

在这种情况下,std::string()表示返回一个std::string并且没有参数的东西的类型。例如,

std::string foo() { return "Foo!\n"; }

或一个实例

struct Foo
{
  std::string operator()() const { return "Foo!\n"; }
};
于 2012-11-20T12:02:19.227 回答