boost :: regex против std :: regex - не можете найти метод empty ()? - PullRequest
7 голосов
/ 18 октября 2011

Замена boost::regex на std::regex, так как мы используем gcc 4.6 в компании, у меня возникла проблема с empty () методом этого класса - он в основном не был сделан из boost::regex в std::regex класс.Я не уверен, является ли это проблемой gcc или этот метод вообще не входит в стандарт C ++ 11, но этот фрагмент кода сильно зависел от этой функции.Итак, вопрос в том, есть ли способ в C ++ 11 std::regex проверить, было ли когда-либо установлено выражение, или мне следует придерживаться boost::regex до конца моей жизни?

1 Ответ

10 голосов
/ 18 октября 2011

empty() был удален из std::regex давно. N1507 (2003-09-16) была оригинальная статья, предлагающая удалить ее (поиск «Что такое недопустимое / пустое регулярное выражение?»). Эта проблема была направлена ​​на то, что тогда было std::tr1:regex. Он был записан в списки выпусков LWG tr1 как выпуск 7.28 и содержал следующее решение:

Обсуждается в Kona. LWG соглашается, что конструктор по умолчанию должен быть эквивалентным конструкции из пустой строки. Оставив это открытым на данный момент отчасти потому, что нам нужна формулировка, выражающая это потому что не ясно, есть ли смысл иметь thetyty () функция-член на первом месте.

N1711 (2004-11-04) был первым проектом TR1, в котором отсутствовал basic_regex::empty(). Оттуда он был импортирован из TR1 в C ++ 11 без дальнейшего обсуждения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...