Remove a PGI-specific workaround in the functor constructor. The workaround was necessary several years ago to get class functor to compiler with PGI, but the workaround now causes compilation errors.
Unitialized rules can silently be aggregated during parser composition,
because of statics across translation units.
get_info<> has been fixed so it doesn't break. As a QoI measure, it also
added a debug assert to help diagnose the situation.
In unary_parser and binary_parser, this commit allows that debug assert
to run as early as possible (typically during program startup) so that
users will notice the initialization ordering problem.
See http://stackoverflow.com/a/41785268/85371 for the
reproducer/analysis.
Unitialized rules can silently be aggregated during parser composition,
because of statics across translation units.
Also add a debug assert diagnosing this situation.
See http://stackoverflow.com/a/41785268/85371 for the
reproducer/analysis.
Fixes the following warning message from the Intel compiler:
> boost/spirit/home/qi/numeric/detail/real_impl.hpp(34): warning #780:
> using-declaration ignored -- it refers to the current namespace
Lex is using `unique_ptr` from `movelib` and relying on a bug in it,
described in a ticket https://svn.boost.org/trac/boost/ticket/11758
Since that bug fixed in `movelib`, Lex is uncompilable.
I have simplified unique_ptr usage by the following rules:
- `delete ptr.release()` is equal to `ptr.reset()`
- `delete a.release(); a = b;` is equal to `b.swap(a); b.reset();`
Now Lex test suite compiles and runs succesfully. VC++ 6 should be
happy too despite the fact that Boost no longer supports it.
This PR contains fixes for both issues reported by Lastique and
MarcelRaad. It makes PR #197 obsolete.
Removed obsolete dependency of test/qi/expectd.cpp on
mxc/qitoo/qitoo.hpp. Was reintroduced by mistake.
Created qi/detail/expectation_failure.hpp. It defines the
expectation_failure template as a common dependency of expect directive
and expect operator. Removed expectation_failure from
operator/expect.hpp.
Changed version.hpp to 2.54. I did not notice that addl file in the
first place.
The qi_expectd.hpp was removed. qi_expect.hpp now forwards to both
directive and operator. Directive doc adjusted to reflect that change.
Lexer.qbk restored to qi develop because change is not part of expect
directive.
This change is necessary only to to maintain the independence of order
of header inclusion in qi.hpp.
Without that change, directive.hpp must be included before operator.hpp,
because the expect operator implementation was in a struct named expect
(before this change). This caused a naming conflict with the new expect
directive.