为什么这个参数在regex_match的原型中排序
Why this argument order in the prototypes of regex_match?
以下是std::tr1::regex_match
的6个原型的简化
regex_match(iterator1, iterator2, match_results&, regex&, flags = some_default);
regex_match(iterator1, iterator2, regex&, flags = some_default);
regex_match(Elem*, match_results&, regex&, flags = some_default);
regex_match(Elem*, regex&, flags = some_default);
regex_match(string, match_results&, regex&, flags = some_default);
regex_match(string, regex&, flags = some_default);
我想知道为什么原型是这样设计的:
- 似乎
match_results
和flags
都是可选的,但您应该能够提供其中一个。为什么不把match_results &
参数移到flags
参数旁边呢 regex &
论点作为主要论点似乎更直观
有人能解释一下这些原型背后的原理吗?
谢谢。
我唯一能想到的就是与算法库保持某种风格上的一致性。如果你认为match_results是某种输出迭代器,那么它看起来有点像copy等,前面有一个迭代器范围,后面有一个输出迭代程序,后面有谓词。不存储match_results的选项将这些结果转换为谓词,如any_of等。
对于图书馆中的一致性,有一些话要说。
这是我的猜测。
至于"为什么选择这样",没有客观的答案;我肯定找不到明显的技术原因。
我会把它归结为委员会的设计。
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- 功能原型的目的
- getline() 的原型/库是什么;
- 具有enable_if外部类原型的模板类构造函数定义
- 函数如何通知用户它基于函数原型抛出异常?
- 在C++中包含原型文件的正确方法是什么?
- 在函数中拥有函数原型的目的是什么?
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以使用 libclang python 解析 cpp 文件中没有标头的函数原型
- 错误消息:使用"string* +="后"no match for 'operator+='"
- 如果原型是本地的,则使用流 I/O C++类型约束将失败
- 如何进行原型消息交叉引用?
- 在 Eclipse: "error: no match for 'operator='" 中获取错误消息
- 有没有办法在C++编译时更改函数原型?
- 省略函数原型中的返回类型
- 在 linux 原因上运行自定义原型插件
- 为什么以及如何使用原型设计模式
- 模板函数参数到模板函数的"candidate template ignored: could not match ..."
- 您是否必须随项目一起交付原型文件?
- 开放CV垫"Sizes of input arguments do not match"的问题