c++ - 参数规范中的对象

标签 c++ templates boost boost-spirit

为什么这句话在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
};

摘自这里:

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

最佳答案

在此上下文中,std::string() 表示返回 std::string 且没有参数的类型。例如,

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

或实例

struct Foo
{
  std::string operator()() const { return "Foo!\n"; }
};

关于c++ - 参数规范中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13472591/

相关文章:

c++ - "is processed"还是 "was processed"?

c++ - 奇怪的链接器错误未定义对 vtable 的引用

c++ - 为什么模板函数接收带有一维引用的二维数组,而普通函数不接收

c++ - STL 容器作为模板参数

c++ - 变体与继承

c++ - 以编程方式挂载 UTF8 的 FAT32 文件系统

c++ - 具有默认模板参数的参数包

c++ - 是否有 boost/tr1 shared_ptr 的 boost-independent 版本

c++ - 根据 boost::filesystem,为什么这个文件不是常规文件?

c++ - 从命令行获取参数的问题