I have the following code:
typedef std::vector children_t;
children_t children = group.children_.value();
⋮
children.push_back(*n);
bool succeeded = false;
BOOST_SCOPE_EXIT((&succeeded)(&children)) {
if (!succeeded) { children.pop_back(); }
} BOOST_SCOPE_EXIT_END
This is yielding compiler errors like this:
193: error: ‘boost_se_params_t_193::boost_se_param_t_0_193’ is not a type
193: error: ‘boost_se_params_t_193::boost_se_param_t_1_193’ is not a type
The block of code emitted by the preprocessor starts like this:
typedef void (*boost_se_tag_0_193)(int &succeeded);
typedef void (*boost_se_tag_1_193)(int &children);
… which leads me to conclude that, for some reason, BOOST_SCOPE_EXIT
isn't picking up the correct types for its arguments.
Has anyone seen this sort of thing before? Is there something I can do
to play more nicely with BOOST_SCOPE_EXIT?
--
Braden McDaniel