Breaking change: empty expressions,
and empty alternatives are now allowed when using the Perl regular expression
syntax. This change has been added for Perl compatibility, when the new
syntax_option_typeno_empty_expressions is set then the old behaviour
is preserved and empty expressions are prohibited. This is issue #1081.

Breaking Change: The syntax options that can be passed to basic_regex
constructors have been rationalized. The default option (perl) now has
a value of zero, and it is now clearly documented which options apply
to which regular expression syntax styles (perl, POSIX-extended, POSIX-basic
etc). Some of the more esoteric options have now been removed, so there
is the possibility that existing code may fail to compile: however equivalent
functionality should still be available.

Breaking Change: POSIX-extended and POSIX-basic regular expressions now
enforce the letter of the POSIX standard much more closely than before.

Added support for (?imsx-imsx) constructs.

Added support for lookbehind expressions (?<=positive-lookbehind)
and (?<!negative-lookbehind).

Added support for conditional expressions (?(assertion)true-expresion|false-expression).

Added MFC/ATL string wrappers.

Added Unicode support; based on ICU.

Changed newline support to recognise \f as a line separator (all character
types), and \x85 as a line separator for wide characters / Unicode only.

Added a new format flag format_literal that treats the replace string
as a literal, rather than a Perl or Sed style format string.

Errors are now reported by throwing exceptions of type regex_error. The
types used previously - bad_expression and bad_pattern - are now just
typedefs for regex_error. Type regex_error has a couple of new members:
code() to report an error code rather than a string, and position() to
report where in the expression the error occured.

Completely rewritten pattern matching code - it is now up to 10 times
faster than before.

Reorganized documentation.

Deprecated all interfaces that are not part of the regular expression
standardization proposal.

Added regex_iterator and regex_token_iterator .

Added support for Perl style independent sub-expressions.

Added non-member operators to the sub_match class, so that you can compare
sub_match's with strings, or add them to a string to produce a new string.

Added experimental support for extended capture information.

Changed the match flags so that they are a distinct type (not an integer),
if you try to pass the match flags as an integer rather than match_flag_type
to the regex algorithms then you will now get a compiler error.