Деструктор для таких временных файлов называют в конце полного выражения. Это - самое внешнее выражение, которое не является частью никакого другого выражения. Это находится в Вашем случае после функциональных возвратов, и значение оценено. Так, это будет работать все хорошие.
Это на самом деле, что делает шаблонную работу выражения: Они могут держать ссылки на такие временные файлы в выражении как
e = a + b * c / d
, поскольку каждый временный файл продлится, пока выражение
x = y
не оценено полностью. Это вполне кратко описано в 12.2 Temporary objects
в Стандарте.
C ++ 11 теперь наконец-то имеет стандартную библиотеку регулярных выражений - std :: regex.
Если у вас нет доступа к реализации C ++ 11 хорошей альтернативой может быть регулярное выражение Boost . Это не полностью эквивалентно std :: regex (например, метод empty () отсутствует в std :: regex ), но тем не менее это очень зрелая реализация регулярного выражения для C ++.
В UNIX-подобных системах вы можете использовать функции регулярных выражений POSIX .
Пакет дополнительных компонентов 1 для Microsoft Visual C ++ 2008 (теперь включенный в пакет обновления 1 для Visual Studio 2008) содержит реализацию «официальных» типов reg ex TR1. Выбей себя: -)
Если под стандартом вы имеете в виду комплектный компилятор, то нет. Но большинство других языков, в которые входят расширения регулярных выражений, используют довольно стандартные реализации c
. Например, PCRE - Perl-совместимое регулярное выражение и библиотеки C имеют поддержку регулярных выражений POSIX (см. страницу руководства ).
+1 для PCRE - Perl-совместимое регулярное выражение , я также вспомнил, что использовал GRETA от Mircosoft.
Проверьте библиотеку регулярных выражений Boost . Он должен стать частью стандарта с C ++ 0x.
Qt от Trolltech также имеет реализацию регулярного выражения, которую я считаю очень простой в использовании. Однако, если вы не планируете использовать Qt для чего-либо еще, я бы использовал Boost.Regex, так как вам, вероятно, будет лучше использовать Boost и для других целей.
Регулярные выражения являются частью расширения TR1 C ++. Dinkumware, visual studio и другие уже реализовали это. См.