Boost logo

Boost :

Subject: Re: [boost] [test] BOOST_TEST macro and std::max
From: Gennadiy Rozental (rogeeff_at_[hidden])
Date: 2016-01-06 18:33:52


Benedek Thaler <thalerbenedek <at> gmail.com> writes:

> As far as I understand, the binary_expr gets constructed,
> holding the right value (3) in m_rhs.
> The address of this member is watched, which gets modified twice, by a
> lazy_ostream object, which happens to be at the same address.

This some voodoo crap is going on here. We should have some choice words
with your compiler about placing two separate live objects on the same
stack address.

Seriously though. There are two relevant statements involved in BOOST_TEST:

BOOST_TEST_BUILD_ASSERTION( P );

and

report_assertion(
  E.evaluate(),
  BOOST_TEST_LAZY_MSG( "description" ),
  __FILE__,
  __LINE__,
  ::boost::test_tools::tt_detail::CHECK,
  ::boost::test_tools::tt_detail::CHECK_BUILT_ASSERTION,
  0 );

You can unwrap remaining macros as well. Can you try to create trivial
example illustrating the issue? you can replace report_assertion with your
own function and get rid of the most of Boost.Test references (including
BOOST_AUTO_TEST_CASE).

Gennadiy


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk