以下是std::tr1::regex_match
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 &
参数作为主要参数似乎更直观。有人可以解释这些原型背后的基本原理吗?
谢谢。
答案 0 :(得分:2)
我唯一能想到的是与算法库的某种风格一致性。如果你认为match_results是某种输出迭代器,那么它看起来像copy等,前面有一个迭代器范围,之后是输出迭代器,之后是谓词。不存储match_results的选项将这些变为谓词,如any_of等。
为了图书馆的一致性,有一些事情要说。
这是我的猜测。
答案 1 :(得分:0)
我想我同意你的观点。你的建议会更有意义。
至于“为什么选择这种方式”,对此没有客观的答案;我当然没有明显的技术理由。
我把它归结为委员会设计。