Those are old compilers and removing support allows removing a couple
of workarounds. It also reduces the CI burden and will allow us to test
more recent and more relevant compilers.
This used to guard against a bug in the std::tuple implementation, but it
seems like this bug was fixed in subsequent minor releases of Clang 3.5 and
3.6, which we test against.
The idea was given to me by Daniel Pfeifer (@purpleKarrot), who said it may
actually help find ODR issues better. In any case, this simplifies the script
and reduces the (otherwise overwhelming) number of targets.
- Rename test/_support to test/_include
- Move stuff from test/_include/test to test/_include/support
- Move stuff in test/_include/support into global namespace
The example/tap.cpp bug was actually interesting, so I'll document it
here. We were using `tap` with a function that performed side effects.
However, we relied on the side effects being done in a particular order
for the example to pass. This is a violation of what the documentation
says we're allowed to.
On Windows, the call convention is such that arguments are evaluated
from right to left, instead of left to right like on OS X and Linux.
Since `chain` uses `transform` and `transform` expands `f(x)...` inside
a function call, our function with side effects was being called in
reverse order as what we would have expected!
Morale: Listen to the documentation, or perish.
The Fusion adapters have been giving me trouble for a long time now.
The problem is that Hana's unit tests are more thorough than Fusion's,
and hence we keep uncovering Fusion bugs through Hana's unit tests.
This keeps on breaking the build and makes me lose valuable time trying
to workaround these bugs until they are fixed in Fusion's master branch.
Therefore, only the methods that are implemented by Fusion adapters are
tested to make sure they work as expected, but the other algorithms that
are derived from them are not tested on Fusion adapters.
Also:
- Remove the boost_hana_add_executable function, which is now useless
- Properly set the LD_LIBRARY_PATH to link against a custom libc++
- Adjust the Travis build
Fixes#135
This is done because the resulting macros are much more straightforward
to debug when a user makes a mistake. Also, it avoids pulling yet another
dependency.
Also added some general purpose macros in detail/preprocessor.hpp.
- Make sure the check.benchmarks are serialized
- Run Doxygen with Clang 3.6 instead of Clang trunk
- Download prebuilt Doxygen instead of building from source
- Run unit tests on two cores
This commit fixes issue #75, but it does not fix the related issue #76.
It only makes sure that function objects are not defined multiple times,
but does not ensure the uniqueness of the addresses of the function
objects, which is much harder to get right.
Fixes#75
- Define the notion of move-independence, thus relaxing the requirements on accessors.
- Rename `members` to `accessors` and use `members` to get the members only
- Document the different ways of providing a model
- Make the model of Foldable more consistent
Fixes#53