...some update:
Attached is the log of ParserThread. As you see: It freaks out in "HandleTypedef()" / "ReadClsNames()". There is still a major bug there.
DoAddToken() : Added/updated token 'T13' (41), type ', typenametypename', actual 'typenametypename'. Parent is spirit (4)
DoAddToken() : Prepending ''
DoAddToken() : Added/updated token 'closure' (42), type '', actual ''. Parent is spirit (4)
DoParse() : Loop:m_Str='', token='typedef'
HandleTypedef() : Typedef start
HandleTypedef() : token=phoenix, peek=::
HandleTypedef() : Pushing component='phoenix::closure', typedef args=''
HandleTypedef() : token=3, peek=,
ReadClsNames() : Unexpected token '3'.
HandleTypedef() : Pushing component='3', typedef args=''
+ '3'
HandleTypedef() : token=3, peek=,
ReadClsNames() : Unexpected token '3'.
HandleTypedef() : Pushing component='3', typedef args=''
+ '3'
HandleTypedef() : token=3, peek=,
ReadClsNames() : Unexpected token '3'.
HandleTypedef() : Pushing component='3', typedef args=''
+ '3'
...another update:
If you paste the following code (it's part of the content of closure.hpp) into an own (empty) file you can reproduce this bug.
template <
typename DerivedT
, typename T0
, typename T1
, typename T2
#if BOOST_SPIRIT_CLOSURE_LIMIT > 3
, typename T3
, typename T4
, typename T5
#endif
>
struct closure :
public phoenix::closure<
T0, T1, T2
#if BOOST_SPIRIT_CLOSURE_LIMIT > 3
, T3, T4, T5
#endif
>
{
typedef phoenix::closure<
T0, T1, T2
#if BOOST_SPIRIT_CLOSURE_LIMIT > 3
, T3, T4, T5
#endif
> phoenix_closure_t;
typedef closure_context<DerivedT> context_t;
};