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