Hi,
  I'm a new user of xpresssive and I'd like to first give a big thank you for this wonderful tool.

 I'm having problems with the syntax for static regexes.  The cheat sheet in the documentation says that (set= 'a','b','c') and as_xpr('a') | 'b' |'c' are equivalent yet the example
sregex parentheses;
parentheses = '(' >> *(keep(+~(boost::xpressive::set='(',')'))|by_ref(parentheses)) >> ')';
compiles while
sregex parentheses;
parentheses = '(' >> *(keep(+~(as_xpr('(')|')'))|by_ref(parentheses)) >> ')';
fails to do so (code and abbreviated errors attached).  Additionally, combining the original lines into one construction, like so:
sregex parentheses = '(' >> *(keep(+~(boost::xpressive::set='(',')'))|by_ref(parentheses)) >> ')';
compiles but running the code fails with:
regnestest: /usr/include/boost/xpressive/detail/utility/tracking_ptr.hpp:457:
 const boost::shared_ptr<T>& boost::xpressive::detail::tracking_ptr<Type>::get_(bool) const [with Type = boost::xpressive::detail::regex_impl<__gnu_cxx::__normal_iterator<const char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >]:
 Assertion `!this->has_deps_()' failed.
  
and using as_xpr for the first term:
sregex parentheses = as_xpr('(') >> *(keep(+~(boost::xpressive::set='(',')'))|by_ref(parentheses)) >> ')';
  
also compiles but causes a seg fault when run!

All this is using g++ 4.2.3 and boost 1.34 as packaged with Debian testing.  These seem like library errors to me, but like I said, I'm new to xpressive, and I'd be even happier to have my understanding improved.

Zachary