boost :: regex vs std :: regex - 找不到empty()方法?

时间:2011-10-17 21:20:24

标签: c++ regex boost c++11 std

boost::regex替换为std::regex,因为我们在公司使用gcc 4.6时遇到了该类empty ()方法的问题 - 它基本上没有来自{{ 1}}进入boost::regex类。我不确定这是否是一个gcc的问题,或者这个方法根本没有进入C ++ 11标准,但是这段代码很大程度上取决于这个特性。所以问题是 - 在C ++ 11 std::regex中是否有办法检查表达式是否已设置,或者我应该在余生中坚持std::regex

1 个答案:

答案 0 :(得分:10)

很久以前,

empty()已从std::regex移除。 N1507(2003-09-16)是建议将其删除的原始论文(搜索“什么是无效/空正则表达式?”)。这个问题针对的是std::tr1:regex。它在问题7.28中记录在LWG tr1问题清单中,并包含以下决议:

  

在科纳讨论。 LWG同意默认构造函数应该   等同于空字符串的构造。让这个开放   现在部分是因为我们需要表达这一点的措辞,部分原因   因为不清楚是否有任何意义,有空()   成员函数首先。

N1711(2004-11-04)是缺少basic_regex::empty()的第一个TR1草案。从那里它从TR1导入到C ++ 11中,没有进一步的讨论。