[/
 / Copyright (c) 2008 Eric Niebler
 /
 / Distributed under the Boost Software License, Version 1.0. (See accompanying
 / file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 /]

[section Installing xpressive]

[h2 Getting xpressive]

There are two ways to get xpressive. The first and simplest is to download
the latest version of Boost. Just go to [@http://sf.net/projects/boost] and
follow the ["Download] link.

The second way is by directly accessing the Boost Subversion repository.
Just go to [@http://svn.boost.org/trac/boost/] and follow the instructions there for
anonymous Subversion access. The version in Boost Subversion is unstable.

[h2 Building with xpressive]

Xpressive is a header-only template library, which means you don't need to alter
your build scripts or link to any separate lib file to use it. All you need to
do is `#include <boost/xpressive/xpressive.hpp>`. If you are only using static
regexes, you can improve compile times by only including `xpressive_static.hpp`.
Likewise, you can include `xpressive_dynamic.hpp` if you only plan on using
dynamic regexes.

If you would also like to use semantic actions or custom assertions with your
static regexes, you will need to additionally include `regex_actions.hpp`.

[h2 Requirements]

Xpressive requires Boost version 1.34.1 or higher.

[h2 Supported Compilers]

Currently, Boost.Xpressive is known to work on the following compilers:

* Visual C++ 7.1 and higher
* GNU C++ 3.4 and higher
* Intel for Linux 8.1 and higher
* Intel for Windows 10 and higher
* tru64cxx 71 and higher
* MinGW 3.4 and higher
* HP C/aC++ A.06.14

[/ * QNX qcc 3.3 and higher]
[/ * Metrowerks CodeWarrior 9.4 and higher]

Check the latest tests results at Boost's
[@http://beta.boost.org/development/tests/trunk/developer/xpressive.html
Regression Results Page].

[note Please send any questions, comments and bug reports to eric <at>
boost-consulting <dot> com.]

[endsect]
