为什么这句话在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
};
从这里摘录:
规则定义需要一个类型,但是我向它发送一个对象。有可能吗?
答案 0 :(得分:3)
你没有给它一个对象。 std::string()
是不带参数的函数类型,返回std::string
。
答案 1 :(得分:3)
在此上下文中,std::string()
表示返回std::string
并且没有参数的内容的类型。例如,
std::string foo() { return "Foo!\n"; }
或
的实例struct Foo
{
std::string operator()() const { return "Foo!\n"; }
};