为什么C++标准使正则表达式算法成为免费函数
Why does C++ standard make regex algorithms free functions?
我想知道为什么C++标准决定使regex_*函数(regex_match,regex_search,regex_replace)非成员非朋友。它们都需要访问basic_regex的内部结构才能执行算法。他们为什么不让他们成为basic_regex的成员职能?在这种情况下,免费函数有什么好处?
由于regex_*函数是非成员、非友元的,所以它们只能访问basic_regex
的公共接口。如果它们只需要访问公共接口,那么作为成员函数比自由函数没有太大好处,因为成员和自由函数都可以访问公共接口。此外,通过成为自由函数,您可以删除将 regex_* 函数与 basic_regex
类连接的依赖项。如果将 regex_* 函数添加到、更改或删除,则不使用这些特定 regex_* 函数的basic_regex
用户不必重新编译或眨眼。这将有助于将来证明这些功能的客户,并basic_regex
未来标准中梦寐以求的任何变化。
访问basic_regex
接口的受保护成员或私有成员时才需要成为成员函数或友元函数。
如果不需要,为什么要添加依赖项?
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- 优点和缺点 在类内为大型项目定义的内联朋友助手免费函数
- 为什么比较和交换操作同时存在免费函数和成员函数?
- 为什么 std::list::splice 不是一个免费函数?
- Bison试图在解析器上使用免费的yylex()函数C++
- 如何生成免费函数
- 实现运算符的正确方法!=用于类外的模板作为一个免费函数
- 为什么C++标准使正则表达式算法成为免费函数
- 这是否可以减少免费模板函数的编译时间
- std::unique_ptr 用于需要免费的 C 函数
- 带有参数的免费函数,获取返回类型
- 最Vexing的朋友?朋友化一个专门的免费函数模板会引发编译错误(当重载一个方法时)
- 使用boost.asio的免费async_*函数时出现奇怪的错误
- 免费/开源的C/ c++矢量数学函数库