Louis Dionne
7ad0acf8eb
[Optional] Make the constructor explicit
...
This is a workaround to fix #149 , but a proper fix will actually require
a new closure implementation.
Fixes #149 .
2015-06-21 18:03:20 -04:00
Louis Dionne
1b45d87a42
[Iterable] Rename drop.at_most to drop and drop.exactly to drop_exactly
...
Partially addresses #114
2015-06-21 12:08:23 -04:00
Louis Dionne
46207eed20
[Sequence] Rename take.at_most to take, and take.exactly to take_exactly
...
Partially addresses #114
2015-06-21 11:50:02 -04:00
Louis Dionne
4bef99d3d0
[Core] Completely remove operators from the core
...
Properly providing operators for users was too complicated, and it is
judged as being out of Hana's scope.
Instead, operators are now provided by helper classes in the detail::
namespace. Now, we can be as dirty as we want, since it is not part of
the interface anymore.
Fixes #138
Closes #30
2015-06-20 17:56:40 -04:00
Louis Dionne
18d39cd410
[Sequence] Rename scan.{left,right} to scan_{left,right}.
...
Partially addresses #114
2015-06-16 13:00:15 -04:00
Louis Dionne
7150695767
[Foldable] Use underscore syntax for monadic folds
...
Also,
- Fix broken reference to fold_right/fold_left in the cheatsheet
Partially addresses #114
2015-06-14 16:56:24 -04:00
Louis Dionne
2f4bd71686
[Tests] Group the unit tests for Foldable and Sequence mcds
2015-06-14 12:51:37 -04:00
Louis Dionne
724b2b36f1
[Iterable] Provide only Iterable::fold_right_impl
...
- This fixes a bug where we used `init` in Iterable::fold_right_impl
- Also fixes the Foldable's default implementation of fold_right without a state
2015-06-14 12:41:24 -04:00
Louis Dionne
3a13f0a8f7
[Struct] Make the accessors created by struct macros constexpr
...
Also,
- Add missing includes to the struct_macros.hpp header
- Make sure we avoid issue #113
Fixes #112
Fixes #113
2015-06-14 12:13:21 -04:00
Louis Dionne
55c095ebbb
[Foldable] Remove fold_right from the MCD
...
Also,
- Document the fact that the default `unpack` is inefficient
- Give a single implementation of `length` in terms of `unpack`
- Doxygen: product = see documentation
Fixes #108
2015-06-14 10:59:07 -04:00
Louis Dionne
b5a9a2e2c9
[Foldable] Rename fold.{left,right} to fold_{left,right}
...
Fixes #106
2015-06-14 10:07:04 -04:00
Louis Dionne
d99899cb02
[IntegralConstant] Guarantee the order of execution for .times.with_index
2015-06-12 17:30:37 -04:00
Louis Dionne
d04b175eb3
[Map] Fix test broken by 71ca00dcf7
2015-06-12 16:40:26 -04:00
Louis Dionne
36575dbb89
Fix a bug when checking models<> for concepts with binary methods
...
Also, check the models<> metafunction properly in the laws.
Fixes #91
2015-06-12 15:23:07 -04:00
Louis Dionne
71ca00dcf7
[Map,Set] Make sure make<..> is passed compile-time Comparable keys
2015-06-12 15:23:07 -04:00
Louis Dionne
1022f74fa7
Remove our partial <type_traits> reimplementation
...
There was a legitimate reason to have this duplication when the library
was much smaller. However, hovering at about 30 kLOCs, the library is
definitely not small enough anymore to mandate reimplementing our own
<type_traits>. Also, most user code will probably include <type_traits>
anyway, so using <type_traits> will not increase the overall compilation
time in actual code bases.
Finally, this gives us much more flexibility, like the ability to
inherit our IntegralConstant from std::integral_constant, and then
return that from the traits:: metafunctions, so that operators can
be used with them.
2015-06-12 12:49:22 -04:00
Louis Dionne
35cdf3b83a
[Struct] Implement macros using ERB templates instead of Boost.Preprocessor
...
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.
2015-06-10 15:50:35 -04:00
Louis Dionne
9928dea216
[Traversable] Remove that concept entirely
...
That concept was added more for completeness than for actual usefulness,
since I have not used it a single time since its creation. Given the
complexity of the library, I think it is better to remove it and shrink
the library to a more useful core than giving too many features that
contribute to bloat.
Also, the laws were difficult to check and it hence Traversable models
were not very well tested anyway.
I can always roll this back if someone shows me how Traversable is
actually useful for metaprogramming.
2015-06-10 10:07:55 -04:00
Louis Dionne
951bc46cd2
[Range] Optimize Range operations by requiring the Range to hold IntegralConstants
2015-06-08 21:03:12 -04:00
Louis Dionne
7a4919e69d
[MonadPlus] Swap the arguments of prepend and prefix
2015-06-08 18:13:04 -04:00
Louis Dionne
09b8e38113
[Sequence] Add insert and insert_range functions
...
Partially addresses #52
2015-06-08 17:04:52 -04:00
Louis Dionne
9c2d3b396a
Rename Maybe to Optional
2015-06-08 14:49:26 -04:00
Louis Dionne
ff90ce4e72
[Maybe] Add make<Maybe> and make_maybe for consistency
2015-06-07 17:43:51 -04:00
Louis Dionne
7b1de7fe43
[Travis] Speed up the travis build
...
- 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
2015-06-05 19:38:27 -04:00
Louis Dionne
90437a8a6d
[Range] Merge the unit tests into a single file with parts
2015-06-04 23:14:21 -04:00
Louis Dionne
07f15e171f
Normalize the parameter order of take, suffix, remove_at, cycle and repeat
...
Closes #83
2015-06-04 22:29:13 -04:00
Louis Dionne
077dc7b6c9
[Iterable] Normalize parameter order for at and drop
...
Partially addresses #83
2015-06-04 21:13:51 -04:00
Louis Dionne
555f252451
[Iterable] Rewrite any_of so it works with infinite iterables
...
Fixes #31
2015-06-03 14:41:42 -04:00
Louis Dionne
c832df8b1e
[Sequence] Add the unique{.by} algorithm
...
Partially addresses #52
2015-06-03 14:06:56 -04:00
Louis Dionne
0ff9572382
Create the detail::by helper to provide a .by static member.
...
Also improve the documentation of the algorithms with a .by version.
2015-06-03 12:17:29 -04:00
Louis Dionne
4ce522ec20
[Set, Map] Add the erase_key function
...
Partially addresses #52
2015-06-03 10:11:13 -04:00
Louis Dionne
a32de51bfa
[String] Add an optional _s user-defined literal to create Strings
...
Fixes #79
2015-06-02 14:45:38 -04:00
Louis Dionne
535bc937b6
[Type] Do not treat Types and values differently in is_valid
...
Fixes #58
2015-06-01 18:06:38 -04:00
Louis Dionne
647e695951
[CMake] Add the check
target and fix minor annoyances
2015-05-30 12:23:01 -04:00
Louis Dionne
a5245c0a72
[Core] Fix weird compilation error with is_an
on Clang 3.5
2015-05-26 15:12:44 -04:00
Louis Dionne
6159007c15
[IntegralConstant] Write proper unit tests for .times and .times.with_index
2015-05-26 11:20:03 -04:00
Louis Dionne
f81f732390
Convert some RUNTIME_ASSERTs into RUNTIME_CHECKs
2015-05-26 10:52:38 -04:00
Louis Dionne
6ee5137604
[GCC] Workaround GCC ICEs and bugs
2015-05-24 21:00:27 -04:00
Louis Dionne
dc909f8900
[GCC] Remove unused parameter warnings and disambiguate use of size_t
2015-05-24 21:00:26 -04:00
Louis Dionne
aa2edb08ce
[CMake] Reduce the number of targets and modularize the code
2015-05-22 16:23:54 -04:00
Louis Dionne
2b0846a79a
Fix ODR violations caused by multiple definitions in header
...
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
2015-05-21 16:38:00 -04:00
Louis Dionne
8f117eaba8
[Tuple] Fix bug in flatten with GCC and remove unused variable warnings
2015-05-20 16:56:48 -04:00
Louis Dionne
0660af6a8f
[GCC] Initial port to GCC
...
- Fix ambiguous specialization in core/datatype
- [Config] Turn #errors into #warnings
- Qualify recursive calls to `apply` to make sure the right function is selected
- Remove usages of when_valid to workaround ambiguous specializations
- Use multiline comments to remove some GCC warnings with LaTeX's double backslash
- Specialize operators::of in the boost::hana::operators namespace
- Manually perform more conversions in constexpr-context
- Workaround the lack of support for constexpr-but-non-const member functions
- Disambiguate unqualified uses of size_t with hana::size_t and ::size_t
2015-05-20 16:56:34 -04:00
Louis Dionne
e1ed31f3aa
[Constant] Test the equivalence between value_of and value
2015-05-20 16:46:58 -04:00
Louis Dionne
6e9a7a28c9
[Ext] Disable failing Fusion tests because of Fusion bugs
2015-05-20 13:33:42 -04:00
Louis Dionne
5019db00c4
[Detail] Make sure variadic::for_each
is constexpr
2015-05-19 11:56:19 -04:00
Louis Dionne
90ddffe54d
[Sequence] Add the cartesian_product
method
...
Also, replace the old tuple_cartesian_product by a newer, slightly
more efficient but much simpler version.
2015-05-19 11:55:50 -04:00
Louis Dionne
daea3549d5
[Struct] Add the keys method to Structs
2015-05-14 16:42:56 -06:00
Louis Dionne
fc18a6cc21
[ext/fusion] Increase MAX_VECTOR_SIZE to fix failing tests
2015-05-06 18:59:05 -04:00
Louis Dionne
2e483fb9fc
[Tests] Fix bug in the sequence law checking
...
When BOOST_HANA_TEST_SEQUENCE_PART was defined, only the first section
of the tests would be run because we used #elif. Dumb me.
2015-05-06 15:47:36 -04:00
Louis Dionne
5181793455
[Tuple] More efficient implementation of filter, still not incredible
...
Also add benchmarks for filter
2015-05-05 14:05:55 -04:00
Louis Dionne
8446de09a0
[Sequence] Use pointers to avoid extra copies in partition
2015-05-04 14:01:45 -04:00
Louis Dionne
ad69eab92d
[Sandbox] Rename subset to is_subset in SearchableSet (broken by 6ca6501
)
2015-05-04 14:01:45 -04:00
Louis Dionne
3e0838b1e2
[Functional] Move reverse_partial from detail to functional
2015-05-04 14:01:45 -04:00
Louis Dionne
6ca6501278
[Searchable] Refactor the interface
...
- Rename elem to contains
- Rename subset to is_subset, and make is_subset applicable in infix notation
- Add the at_key method
- operator[] is now bound to at_key instead of find
2015-05-04 12:33:51 -04:00
Louis Dionne
a9cf8bf9e7
[CMake] Exclude ext/boost/fusion/detail from the automatic header tests
2015-05-03 13:34:51 -04:00
Louis Dionne
334cbeb188
[Tuple] Allow brace-initializing tuple members
...
Fixes #57
2015-05-03 13:34:51 -04:00
Louis Dionne
dc56f6cebc
[String] Add conversion to char const*
and minor refactoring
...
Also
- remove useless value_type alias in String since it's not a Constant
- document why the interface is so minimal
2015-05-02 15:24:25 -04:00
Louis Dionne
65834220b7
[Type] Fix bug in the implementation of is_valid with nullary functions
2015-05-02 13:36:24 -04:00
Louis Dionne
b2145a2640
[IntegralConstant] Fix a bug with the .times function
...
Passing a normal function to .times would fail
2015-05-01 19:41:22 -04:00
Louis Dionne
3568186dac
[Type] Add the is_valid utility.
...
Also refactor the overview in the README.
2015-05-01 15:54:22 -04:00
Louis Dionne
e6d0fa9487
[CMake] Use Find modules to find optional external libraries
2015-04-28 10:46:44 -04:00
Louis Dionne
9a412f9c39
[MPL] Add a conversion from Foldable
s to MPL vectors
...
Also, properly split the unit tests for mpl::vector
2015-04-26 14:20:15 -04:00
Louis Dionne
b452dc4de3
Remove most usages of detail::std::forward
2015-04-26 09:22:04 -04:00
Louis Dionne
69c02987ef
[Tests] Automatically discover test subparts
2015-04-25 23:32:39 -04:00
Louis Dionne
ef7dcf6800
[Tuple] Fix bug in the new optimized find_if
2015-04-25 17:57:09 -04:00
Louis Dionne
1ee3b93a08
[Tuple] Implement a more efficient drop_while and find_if
2015-04-25 16:31:50 -04:00
Louis Dionne
589425a6dd
[Core] Make has_operator
an IntegralConstant
...
Fixes #51
2015-04-22 07:35:11 -04:00
Louis Dionne
8e427f2c83
[Searchable] Provide an operator[] equivalent to find
2015-04-21 21:56:47 -04:00
Louis Dionne
a3ce836049
[Searchable] Document structure-preserving functions and allow cross-type dispatching in subset
2015-04-21 20:23:24 -04:00
Louis Dionne
f87919b94b
[Record] Rename to Struct and refactor
...
- 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
2015-04-21 16:32:33 -04:00
Louis Dionne
fb518d859a
[Monad] Renaming and refactoring.
...
- Rename bind to chain
- Rename mcompose to monadic_compose
- Rewrite a large part of the documentation
- Document the limit on the arity of functions used with monadic_compose
Fixes 48
Fixes 9
2015-04-19 13:13:23 -04:00
Louis Dionne
ac2f5222cd
[Travis] Run the unit tests under valgrind
2015-04-18 22:36:40 -04:00
lolisa
21952b9f54
comment out unused variable.
...
[ldionne: rebase and remove the -Wno-unused-parameter flag from CMake]
Closes #43
2015-04-14 16:23:51 -04:00
Louis Dionne
0612624939
[Detail] Add basic unit tests for the constexpr algorithms.
2015-04-14 13:32:45 -04:00
Louis Dionne
686656a3f2
[Iterable] Add the drop.at_most and drop.exactly variants to drop
2015-04-12 11:29:02 -04:00
Louis Dionne
1171b83fe3
[Sequence] Add the subsequence method
...
Fixes #37
2015-04-12 10:47:12 -04:00
Louis Dionne
93343e8317
[Tests] Send objects containing Logicals only to the Searchable tests
2015-04-11 13:45:55 -04:00
Louis Dionne
6abd0f9d8e
[Set] Improve the documentation and fix inconsistency in the behavior of to<Set>
2015-04-11 12:49:45 -04:00
Louis Dionne
daaba5dfd8
[Map] Provide model of Foldable, improve docs and add insert
method.
...
Fixes #41
2015-04-11 12:09:01 -04:00
Louis Dionne
8bd84a5d4b
[Metafunction] Generalize trait
to arbitrary Metafunctions and improve docs
2015-04-11 09:29:06 -04:00
Louis Dionne
08e55a7bb6
Rework the relations between Foldable, Iterable and Searchable.
2015-04-10 17:46:14 -04:00
Louis Dionne
c434f134ba
[Applicative] Implement automatic law checking
2015-04-10 13:17:51 -04:00
Louis Dionne
b21fdc32de
[Detail] Remove obsolete detail::wrap utility
2015-04-10 09:38:32 -04:00
Louis Dionne
a12315c1a6
[Detail] Add constexpr algorithms and use them in the implementation
2015-04-10 08:33:18 -04:00
Louis Dionne
17169d99d3
[Constant] Document conversions, embeddings and related material. Fix TODOS
2015-04-09 11:18:03 -04:00
Louis Dionne
fa2cdeef24
[Test] Remove outdated TODO items
2015-04-08 13:17:59 -04:00
Louis Dionne
22b82faacc
[Detail] Optimize the left and right variadic folds
2015-04-08 11:20:00 -04:00
Louis Dionne
80e0adf4e8
[Core] Move wrong to the detail namespace
2015-04-07 19:37:28 -04:00
Louis Dionne
5c1a752a9f
[Pair] Remove the pair
constructor in favor of make_pair
2015-04-07 19:26:59 -04:00
Louis Dionne
ef609d990c
[Test] Add a unit test for while_ for CNumerics
2015-04-07 19:00:50 -04:00
Louis Dionne
fad34112bb
[Test] Fix wrong argument order to TestMonadPlus in laws/templates/seq.hpp
2015-04-07 17:48:14 -04:00
Louis Dionne
8c8743fe5c
[Test] Add a unit test for while_
2015-04-07 17:47:33 -04:00
Louis Dionne
0246c59c6c
[Sandbox] Remove the hana/sandbox folder and put everything in test/sandbox
2015-04-07 16:52:20 -04:00
Louis Dionne
40216cde23
[MonadPlus] Add the remove and remove_if functions to MonadPlus
2015-04-07 16:27:39 -04:00
Louis Dionne
0a46420c02
[Type] Major refactoring and improvements
...
- Make decltype_ the identity on Types
- Add the alignof_ function
- Allow sizeof_ to work with non-Types
- Remove the trait_ helper
- Allow Metafunctions to be called with non-Types
- Add make<Type>, which is equivalent to decltype_
2015-04-07 12:12:52 -04:00
Louis Dionne
3c2aa421b5
[Tuple] Provide efficient folds for tuple_t
...
Fixes #32
2015-04-06 14:28:09 -04:00
Louis Dionne
125fd45bfd
[Functional] Add the overload_linearly utility
2015-04-06 14:11:42 -04:00
Louis Dionne
1d7f28f941
[CMake] Improve the build system
...
- Simplify the compiler flag logic
- Use WARNING instead of STATUS to report caveats
- Allow specifying a custom libc++ root directory
2015-04-02 00:50:58 -04:00
Louis Dionne
13392c7ed2
[Foldable] Use overloads for {maximum,minimum}_by
2015-04-01 19:28:42 -04:00
Louis Dionne
eb4f07a61c
[Sequence] Use overloads for sort/sort_by and group/group_by
2015-04-01 19:28:42 -04:00
Louis Dionne
aaaab0e11d
[Foldable] Allow specifying the Monoid/Ring for sum/product
...
Fixes #33
2015-04-01 16:19:37 -04:00
Louis Dionne
38e02e9f53
[Sequence] Rename scan{l,r,l1,r1} similarly to folds
2015-03-31 17:55:27 -04:00
Louis Dionne
0e1f5987b1
[Sequence] Fix stupid typo that broke compilation in the laws
2015-03-30 21:40:14 -04:00
Louis Dionne
a215f0a1b1
[Monad] Add tests for the bind method for Sequences
2015-03-30 18:30:59 -04:00
Louis Dionne
59d7e36726
[Sequence] Rename unfolds and flip their parameters
2015-03-30 18:17:42 -04:00
Louis Dionne
2c86ba2390
[Foldable] Rename the different fold variants
...
- Rename fold{l,r,l1,r1} to fold.{right,left} with overloads.
- Rename foldlM/foldrM to monadic_fold.{left,right}
- Add no-state variants of the monadic folds
- Improve the fold's documentation
- Deprecate the previous folds; they'll be removed soon
Fixes #18 .
2015-03-30 17:29:37 -04:00
Louis Dionne
540f665e51
Use static_cast<T&&> instead of forward<T> to reduce compile-times
...
It might seem overkill to do this, but I measured:
static_cast:
make compile.test.tuple 92.58s user 4.85s system 99% cpu 1:37.93 total
make compile.test.tuple 91.89s user 4.78s system 99% cpu 1:37.07 total
make compile.test.tuple 92.51s user 4.77s system 99% cpu 1:37.73 total
make compile.test.tuple 95.91s user 5.16s system 99% cpu 1:41.60 total
avg: 98.1125s
forward:
make compile.test.tuple 108.16s user 5.50s system 99% cpu 1:54.36 total
make compile.test.tuple 110.00s user 5.55s system 99% cpu 1:56.17 total
make compile.test.tuple 108.41s user 5.47s system 99% cpu 1:54.46 total
make compile.test.tuple 107.31s user 5.54s system 99% cpu 1:53.46 total
avg: 113.985s
This shows an improvement of the average by 15.8725s, which
represents about 13.9%.
2015-03-29 11:14:24 -04:00
Louis Dionne
a98d32cae1
[Maybe] *just(x) is now equivalent to from_just
2015-03-29 10:39:04 -04:00
Louis Dionne
679677ab38
[minimal_record] Fix a double-move bug
2015-03-29 01:31:32 -04:00
Louis Dionne
7402a010ec
[Tests] Track test::integer and use hana::capture instead of lambda capture to workaround Clang bug
2015-03-29 01:31:31 -04:00
Louis Dionne
637c5270ab
[Functional] Add hana::capture
2015-03-28 22:22:13 -04:00
Louis Dionne
4390aa98df
[Maybe] Fix bug in sfinae with non-pod arguments
2015-03-28 20:44:22 -04:00
Louis Dionne
ab1d294cec
[Tests] Remove obsolete automatic tests in test/auto.
2015-03-26 02:08:44 -04:00
Louis Dionne
beb72c224f
Remove some more usage of lambdas
2015-03-26 02:08:44 -04:00
Louis Dionne
f92be805d0
[fusion::vector] Split the tests for Sequence
2015-03-25 16:19:11 -04:00
Louis Dionne
2ecedc140c
[Functional] Add the iterate
combinator
2015-03-25 12:26:04 -04:00
Louis Dionne
8f999feae2
[CMake] Disable additional broken Fusion tests.
2015-03-25 11:02:22 -04:00
Louis Dionne
eb42d3c673
[CMake] Disable fusion::tuple test for Monad because of a Fusion bug
2015-03-24 17:01:39 -04:00
Louis Dionne
8238bc4c38
[Tests] Re-enable unbroken Fusion tests
2015-03-24 16:21:07 -04:00
Louis Dionne
dfa46fcd69
[Test] Properly split std::tuple's Sequence unit tests
2015-03-24 14:57:41 -04:00
Louis Dionne
224bc2cf9a
[Tests] Split the unit tests for mpl::integral_c
2015-03-22 21:06:37 -04:00
Louis Dionne
afa9171eec
[Foldable] Add fold and reverse_fold aliases
2015-03-22 17:18:26 -04:00
Louis Dionne
6ae5eb2b0f
[Tests] Reimplement foreachN to avoid Clang ICEs
2015-03-22 15:54:07 -04:00
Louis Dionne
46b4def732
[Iterable] Rewrite any_of for Iterable to improve performance and work around Clang ICE
...
Partially addresses #24
2015-03-22 15:54:07 -04:00
Louis Dionne
2bd2b1239c
Fix bugs with copy constructors in almost all the containers
2015-03-22 12:15:32 -04:00
Louis Dionne
5211da5a5d
[Logical/Lazy] Tie eval_if
and eval
together, and update the docs
...
- Improve the documentation and tests of Lazy
- Add missing `operator!` to Logical's documentation
- In `eval_if`, evaluate branches with `eval` for more flexibility
- Use `lazy` instead of ugly workarounds in Sequence and Iterable
2015-03-22 10:58:21 -04:00
Louis Dionne
fbee0a6068
[test/set.cpp] Store permutations in hana::tuple instead of test::seq
2015-03-21 22:56:04 -04:00
Louis Dionne
483969e68c
[Tests] Localize iteration whenever possible to reduce compile-times
2015-03-21 00:32:31 -04:00
Louis Dionne
17d07ccf4c
[Travis] Restart jobs after OOMs
2015-03-21 00:32:09 -04:00
Louis Dionne
466bb3c1ad
Add the Comonad concept and refactor Lazy
2015-03-20 11:55:32 -04:00
Louis Dionne
2d1edb14ff
[CMake] Disable some failing Fusion unit tests
2015-03-20 00:44:23 -04:00
Louis Dionne
41914809a2
[Travis/Test] Clean up and modularization
...
- Properly setup build matrix
- Clean up .travis.yml
- Try building with Boost 1.57 and Boost 1.58
- Install dependencies to the deps/ subdirectory
- Reduce memory usage of test/type.cpp
- Re-enable some Fusion tests
2015-03-19 12:45:26 -04:00
Louis Dionne
52afb17a43
[Tests] Split unit tests in a much more clever way using CMake
2015-03-18 19:28:21 -04:00
Louis Dionne
a8586ec181
[Lazy] Fix move from destroyed object bug
2015-03-15 00:18:32 -04:00
Louis Dionne
5ab6925364
[Test] Fix some tests that fail on Travis and remove warnings
2015-03-15 00:18:31 -04:00
Louis Dionne
744ac273b4
[ext/std/vector] Monomorphic => can't be a Functor
2015-03-15 00:18:31 -04:00
Louis Dionne
1b8b5a5e2f
[ext/std/array] Can't be made a Sequence because it's homogeneous
2015-03-15 00:18:31 -04:00
Louis Dionne
463040d318
[Searchable] Rename find
to find_if
and lookup
to find
2015-03-15 00:18:31 -04:00
Louis Dionne
b69f29ac7a
[Functor] Rename replace
to replace_if
, and add replace
2015-03-15 00:18:30 -04:00
Louis Dionne
bcf573ccc6
[Functor] Rename adjust
to adjust_if
and add adjust
2015-03-15 00:18:30 -04:00
Louis Dionne
cde54c9ec0
[Foldable] Rename count
to count_if
and add count
2015-03-15 00:18:30 -04:00
Louis Dionne
112e34e8a1
[Foldable] Add a size
alias to length
2015-03-13 19:54:28 -04:00
Louis Dionne
7a309d08c6
[Type] Remove some places where we read from non-constexpr variables
2015-03-13 19:54:28 -04:00
Louis Dionne
356a1991b3
[Travis] Remove some MCD tests on Travis because we timeout/OOM
2015-03-13 12:16:34 -04:00
Louis Dionne
261ee2e729
Test comparing
and ordering
in the laws
2015-03-13 12:14:35 -04:00
Louis Dionne
af4ff59bfb
[Core] Add is_a and make sure models<> returns an IntegralConstant
2015-03-13 12:14:32 -04:00
Louis Dionne
56484a3ac9
[CMake] Improve the build system and the targets
...
- Split targets to compile and run tests
- Add run.* targets to run each target
2015-03-12 14:44:14 -04:00
Louis Dionne
9cc9ca4b0e
[Travis] Add support for Travis CI
2015-03-12 14:42:50 -04:00
Louis Dionne
4671796d28
[Pair] Add make_pair and improve tests
2015-03-12 11:52:51 -04:00
Louis Dionne
97f27661cb
[Tests] Split the unit tests for std::ratio and Either, and reduce hungry tests
2015-03-11 11:46:19 -04:00
Louis Dionne
5433debbf8
[Map] Split unit tests and remove usage of lambda
2015-03-10 09:30:07 -04:00
Louis Dionne
53b50c835b
[Tuple] Fix ambiguous overload of transform
2015-03-10 09:30:07 -04:00
Louis Dionne
39079fa95a
[Foldable] Add monadic folds
2015-03-10 09:30:07 -04:00
Louis Dionne
656b57e80b
[ext/utility] Add traits::declval
2015-03-10 09:30:07 -04:00
Louis Dionne
aecb7dcdef
Make sure Metafunctions are as SFINAE-friendly as possible
2015-03-10 09:30:06 -04:00
Louis Dionne
ea601ddf60
[Maybe] Add the sfinae utility
2015-03-10 09:30:06 -04:00
Louis Dionne
d10f8ec2ca
[CMake] Fix failing CMake when Boost is not found
2015-03-08 15:08:13 -04:00
Louis Dionne
6c076555a5
[ext/] Fix std::integer_sequence and mpl::vector failing tests
2015-03-08 11:56:27 -04:00
Louis Dionne
47dc4c7180
[String] Split the unit tests for Orderable and Comparable
2015-03-07 22:41:39 -05:00
Louis Dionne
8a73a3208e
[Map] Add make<Map> and remove map(...)
2015-03-07 21:28:07 -05:00
Louis Dionne
bd4daea264
Use models<Concept, T> instead of models<Concept(T)>, and check data types at the top level
2015-03-07 21:27:46 -05:00
Louis Dionne
d525c20397
[Detail] Add an helper to compute tuple cartesian products
2015-03-07 12:09:02 -05:00
Louis Dionne
76ac948742
[Tracked] Do not output to std::cerr: too much output
2015-03-06 00:16:42 -05:00
Louis Dionne
90dd47d5f1
Less tests for sandbox::LambdaTuple; the whole thing takes too long
2015-03-05 21:50:54 -05:00
Louis Dionne
7c69ef7d98
[tests] Split the seq unit tests
2015-03-05 21:36:35 -05:00
Louis Dionne
4b44e867e1
[ext/] Add an experimental adapter for std::vector
2015-03-05 20:00:21 -05:00
Louis Dionne
d47bbdb876
[test::Tracked] Make it assignable
2015-03-05 19:44:25 -05:00
Louis Dionne
5216569ef2
[Tests] Split more unit tests
2015-03-05 16:57:37 -05:00
Louis Dionne
bb30d0e076
[ADL] Additional tests to make sure tuple_t and type handle ADL properly
2015-03-05 15:44:51 -05:00
Louis Dionne
cc76ebbba2
[IntegralDomain] Use rem instead of mod, and change laws so it's consistent with %
2015-03-05 12:25:50 -05:00
Louis Dionne
911e264884
[laws/Constant] Test both forms of hana::value
2015-03-05 11:46:00 -05:00
Louis Dionne
815a897ac2
[CMake] Create header inclusion test files only when they don't exist
2015-03-05 10:43:16 -05:00
Louis Dionne
479f5ef991
[Tests] Split more unit tests
2015-03-05 10:34:15 -05:00
Louis Dionne
b229a60e25
Refactor the automatic law checking to make it more modular
2015-03-05 09:35:06 -05:00
Louis Dionne
9388fe52eb
[CMake + Config] Successfully compile on Clang 3.5 and improve diagnostics
...
Also disable fusion's adapters tests, which are currently broken
2015-03-05 09:35:06 -05:00
Louis Dionne
5dcd26a5be
[MinimalProduct] Fix a bug where first and second would cause double move
2015-03-05 09:35:06 -05:00
Louis Dionne
47084ad4e0
[Tests] Fix failing test.seq.sequence.monad_plus_mcd
2015-03-04 17:48:53 -05:00
Louis Dionne
c239b5c035
Fix bugs where we read from non-constexpr variables
2015-03-04 16:57:38 -05:00
Louis Dionne
c93a250d87
[Constant] Make value
a nullary method depending only on the type
2015-03-04 16:36:40 -05:00
Louis Dionne
065b910128
Update copyright year.
2015-03-03 14:16:50 -05:00
Louis Dionne
f017c4493a
[Searchable] Swap {all,any,none} and their _of variant for consistency with the STL
2015-03-03 13:51:37 -05:00
Louis Dionne
da5c1a1ef1
[Ext] Re-add the old type_traits integration
2015-03-02 16:13:55 -05:00
Louis Dionne
87145a4a7f
[IntegralConstant] Use nested hana::datatype so we can inherit them
2015-03-02 09:16:59 -05:00
Louis Dionne
dd86906e2d
[Tuple] Make sure _tuple is default constructible when its elements are
2015-02-28 11:35:33 -05:00
Louis Dionne
7e2bcdfee0
[ext/mpl] MPL vectors are not Sequences anymore
2015-02-27 11:34:21 -05:00
Louis Dionne
689ab952f8
[Orderable, Comparable] Add signatures and partially appliable methods
2015-02-25 12:39:05 -05:00
Louis Dionne
aa6eac6c3d
[Config] Move BOOST_HANA_CONSTEXPR_LAMBDA to config.hpp
2015-02-25 10:20:12 -05:00
Louis Dionne
33cba2dea8
[MplVector] Fix broken include in unit test
2015-02-25 09:19:59 -05:00
Louis Dionne
c13f660ecc
[MonadPlus] Add signatures and rename nil to empty
2015-02-25 09:19:58 -05:00
Louis Dionne
771a5e39d7
[Range] Implement efficient lookup and elem methods
2015-02-24 19:54:21 -05:00
Louis Dionne
edd086423e
[Tuple] Replace tuple(...) by make<Tuple>(...) in the docs
2015-02-24 18:15:24 -05:00
Louis Dionne
6d8e5b61a0
[Functional/Placeholder] Refactor test and add a missing include
2015-02-24 14:03:14 -05:00
Louis Dionne
ffd4cba716
Two-step definition for _tuple_t and _type
2015-02-23 21:46:43 -05:00
Louis Dionne
e7e9391147
[Iterable] Remove operator[] overload for const&&
2015-02-23 21:46:43 -05:00
Louis Dionne
2a8b52cf17
[Type] decltype(type<T>)
should inherit from _type<T>
2015-02-23 19:34:48 -05:00
Louis Dionne
df97a4dfc1
[Set] Add a model of Foldable
2015-02-23 15:04:45 -05:00
Louis Dionne
4e387cc2ff
[Functional] Change the implementation of arg<n> so it can perfect forward.
2015-02-23 08:09:04 -05:00
Louis Dionne
0db2edff55
[test::numeric] Fix a bug with operators
2015-02-22 16:50:01 -05:00
Louis Dionne
3e78af4bcb
[Tuple] Use make<Tuple>(...) instead of tuple(...)
2015-02-22 16:50:01 -05:00
Louis Dionne
0e197829ca
[Sandbox] Remove old mcd graph experiment
2015-02-22 16:50:00 -05:00
Louis Dionne
7dad374f1f
[Tuple] Fix a nasty double-move in flatten
2015-02-22 16:50:00 -05:00
Louis Dionne
8c6bdb3a3f
[Tuple] Fix a bug in transform with tuple_t
2015-02-22 14:55:36 -05:00
Louis Dionne
f772374179
[Searchable] Add a model for builtin arrays.
2015-02-22 14:55:36 -05:00
Louis Dionne
f64a130985
[Comparable] Test operators automatically
2015-02-22 14:55:35 -05:00
Louis Dionne
d120513366
Rename cons to prepend and snoc to append
2015-02-22 14:55:35 -05:00
Louis Dionne
62ede37419
Rename fmap to transform
2015-02-22 14:55:35 -05:00
Louis Dionne
0323eb185d
[Test] Move record_macros.cpp and remove unused builtin.hpp
2015-02-22 14:55:35 -05:00
Louis Dionne
7ceadaae67
[Tuple] Add examples and slightly improve tests
2015-02-22 14:55:35 -05:00
Louis Dionne
734f89190c
[Core] Refactor the operator system
2015-02-20 11:05:44 -05:00
Louis Dionne
f0c66b31f8
Remove outdated core/ tests and reorganize tests
2015-02-20 11:05:44 -05:00
Louis Dionne
5464f58131
[Sandbox] Remove outdated experiments
2015-02-20 11:05:44 -05:00
Louis Dionne
f31bb617d5
[Tuple] Implement an efficient sort for tuple_c
s
2015-02-20 11:05:44 -05:00
Louis Dionne
9604c9a9f6
Replace List by Sequence
2015-02-20 11:05:43 -05:00
Louis Dionne
eda87ce328
[Monad] Add Monad::ap_impl to simplify modelling Applicative
2015-02-17 15:11:23 -05:00
Louis Dionne
272ffa7900
Add the MonadPlus concept
2015-02-17 15:11:07 -05:00
Louis Dionne
964851bb76
[Foldable] Split tests and remove now useless foreign tests
2015-02-17 00:56:11 -05:00
Louis Dionne
02c9c47510
Remove TypeList and IntegerList
2015-02-15 12:38:04 -05:00
Louis Dionne
15a5a03953
[Bool] Make bool_<...> an alias to integral_constant<bool, ...>.
2015-02-15 11:27:20 -05:00
Louis Dionne
9693a7c2e3
[test::CNumeric] Remove unused mcds
2015-02-15 10:42:52 -05:00
Louis Dionne
5ba0de6bfc
[Orderable] Check for total ordering in the unit tests
2015-02-15 10:42:52 -05:00
Louis Dionne
737f20a5bb
[models] Implement models for each concept; no need to explicitly specialize it
2015-02-15 10:31:12 -05:00
Louis Dionne
337167bbb3
[Traversable] Refactor documentation and split methods
2015-02-15 09:08:02 -05:00
Louis Dionne
681116f0db
[Iterable] Refactor documentation and split methods
2015-02-15 09:08:02 -05:00
Louis Dionne
8e744413be
[Record] Refactor documentation and split methods
2015-02-13 12:00:14 -05:00
Louis Dionne
e4d75ef25a
[Foldable] Refactor documentation and split methods
2015-02-12 11:58:39 -05:00
Louis Dionne
c5f20a51d2
[Searchable] Split methods and refactor documentation
2015-02-12 10:10:38 -05:00
Louis Dionne
f99a35fba6
[Monad] Refactor documentation and split methods
2015-02-11 11:15:16 -05:00
Louis Dionne
dbf7445a3c
[Applicative] Refactor the documentation and split methods
2015-02-11 10:37:01 -05:00
Louis Dionne
8a3e5f794d
[Functor] Refactor documentation and split methods
2015-02-10 20:34:41 -05:00
Louis Dionne
9c32ebe263
[Detail] Remove detail::n_times, which is replaced by int_<i>.times
2015-02-10 20:03:49 -05:00
Louis Dionne
17d2ce584c
[Integral] Rename to IntegralConstant and improve the API
2015-02-10 20:03:49 -05:00
Louis Dionne
5dd70cbf3a
[String] Remove the Constant model and document why
2015-02-10 19:18:40 -05:00
Louis Dionne
88549c004c
[IntegralConstant] Remove the concept
2015-02-10 19:18:40 -05:00
Louis Dionne
dab93cc263
[Comparable] Update docs, split methods and more
...
- Use == for cross-type EqualityComparable data types
- Remove the not_equal mcd
2015-02-10 19:18:40 -05:00
Louis Dionne
9ddad3dc22
[Orderable] Split completely
2015-02-10 18:04:30 -05:00
Louis Dionne
c2b51f3780
[Logical] Split completely
2015-02-10 18:04:30 -05:00
Louis Dionne
1d3aaa93c4
[Monoid up to IntDomain] Refactor the documentation and split the methods
2015-02-10 18:03:42 -05:00
Louis Dionne
a06100c268
[Enumerable] Refactor the documentation and split the methods
2015-02-10 18:03:19 -05:00
Louis Dionne
04985812f8
[Range] Specify what happens when from
and to
have different underlying types
2015-02-10 18:03:19 -05:00
Louis Dionne
0ac6753f27
[Constant] Update the Constant concept and its models
...
- Provide a conversion to the underlying data type
- Provide a common data type when it makes sense
- Remove Constant::instance and Constant::mcd
- Split the methods of all the models
- Make sure all models provide a nested value_type
- Make sure all models provide conversions whenever possible
2015-02-10 18:03:19 -05:00
Louis Dionne
c0690e3747
[CMake] Do not generate header-inclusion tests for ext/boost/* when Boost is not found
2015-02-10 18:03:19 -05:00
Louis Dionne
2604c9eb53
[Detail] Add the CanonicalConstant helper
2015-02-10 18:03:18 -05:00
Louis Dionne
61d59eff57
[Core] Refactor the conversion system, hana::common and add hana::default
2015-02-10 18:02:32 -05:00
Louis Dionne
50dc7506ff
[Functional] Make the placeholder-based operators SFINAE-friendly
2015-02-08 10:51:00 -05:00
Louis Dionne
d6ef326e94
[Product] Split methods, refactor doc and add Orderable instance
2015-02-08 10:43:12 -05:00
Louis Dionne
d5076888fb
[Type] Split methods and refactor the documentation
2015-02-08 09:22:39 -05:00
Louis Dionne
4892c4ad42
[Tuple] Add tuple_t and tuple_c to ease the transition to split methods
2015-02-08 09:22:39 -05:00
Louis Dionne
507aaa033d
[String] Split methods and refactor
2015-02-08 09:22:39 -05:00
Louis Dionne
3947f264c1
[Maybe] Split methods and refactor documentation.
2015-02-08 09:22:39 -05:00
Louis Dionne
245819eb71
[Either] Split methods and refactor documentation
2015-02-08 09:22:39 -05:00
Louis Dionne
9dd3391130
[CMake] Fix typo: CMAKE_CURRENT_LIST_DIRECTORY => CMAKE_CURRENT_LIST_DIR
2015-02-06 18:01:40 -05:00
Louis Dionne
ee648c2bda
[Core] Fix issue with when_valid
2015-02-04 23:02:04 -05:00
Louis Dionne
6d6c9ce923
Remove unused minimal_list.hpp file
2015-01-17 15:45:39 -05:00
Louis Dionne
6f267bd37b
Add detail::generate_integer_sequence
.
2015-01-13 15:49:30 -05:00
Louis Dionne
e8b470aa18
Improve the MCD graph experiment
2015-01-12 15:56:18 -05:00
Louis Dionne
4654c6786a
Split instances for foreign types
2014-12-06 16:30:16 -05:00
Louis Dionne
0371952337
Make while_
part of Logical
2014-12-06 16:30:14 -05:00
Louis Dionne
21bdeb39ae
Only enable operators where needed with test::Seq.
2014-12-01 17:09:43 -05:00
Louis Dionne
8d4b34f6c2
Do not use variable templates for one
, zero
& al.
...
This is because using variable templates limits the objects to being
constexpr, or to not being constexpr (but then initializing the object
becomes an issue).
This is also a step towards being compilable by GCC 4.9, but that only
would not justify the change.
2014-11-30 20:42:29 -05:00
Louis Dionne
51912d8661
Add detail::while_
and detail::until
.
2014-11-29 12:17:25 -05:00
Louis Dionne
e043d1c046
Fix bug when returning a dangling reference from always
.
...
Fixes #15 .
2014-11-23 10:04:50 -05:00
Louis Dionne
8845b2a0c1
Use common
to provide inter data type instances.
2014-11-17 10:05:58 -05:00
Louis Dionne
4009555990
Refactor and improve IntegralConstant
...
- Add mandatory lossless conversions between instances
- implement `common` properly
2014-11-17 09:13:48 -05:00
Louis Dionne
f4e9062d89
Core: add the common
utility
2014-11-17 09:13:48 -05:00
Louis Dionne
12bb5b1fa4
Core: refactor convert
2014-11-17 09:13:36 -05:00
Louis Dionne
d042abda97
Automatically test including individual headers.
2014-11-12 11:22:53 -05:00
Louis Dionne
515ade7cf6
Split Fusion adapters.
2014-11-12 11:22:52 -05:00
Louis Dionne
1d075a6679
List: improve unit tests
2014-11-10 22:29:22 -05:00
Louis Dionne
8756e81977
Add boost/hana/config.hpp and BOOST_HANA_*_CHECK macros.
2014-11-10 17:52:33 -05:00
Louis Dionne
e0e2501931
List: add the remove_at method
2014-11-08 12:32:51 -05:00
Louis Dionne
19b5cd44cf
Improve unit tests for detail::create
2014-11-07 21:33:24 -05:00
Louis Dionne
584c16a746
Work around Clang bugs to make the String compile.
2014-11-07 21:33:23 -05:00
Louis Dionne
0ef90fbf39
Type: add a unary operator+ turning lvalues into rvalues.
...
Fixes #11
2014-11-07 20:31:26 -05:00
Louis Dionne
7b7bda5998
Experiment with adding operators to Types.
2014-11-07 20:31:26 -05:00
Louis Dionne
29995f62ee
Work around bugs in Clang 3.5.
2014-11-07 20:31:26 -05:00
Louis Dionne
b9472015d1
Add the overload utility to Functional
2014-11-07 20:31:26 -05:00
Louis Dionne
da8fb2b486
Add laws to Enumerable.
2014-11-07 19:46:25 -05:00
Louis Dionne
0f0c2c4430
Replace when<is_valid<...>> by when_valid<...>
2014-11-07 15:41:10 -05:00
Louis Dionne
98a39c1204
Remove superfluous #define BOOST_PP_VARIADICS 1.
2014-11-07 10:57:48 -05:00
Louis Dionne
6e86e1f319
Searchable: add some laws
2014-11-05 13:32:45 -05:00
Louis Dionne
049046478e
Move ASSERT macros out of the details
2014-11-04 09:43:44 -05:00
Louis Dionne
1e8726f394
Make the tuple implementation constexpr-friendly.
...
- Move the lambda-based tuple to the sandbox
- Use the multiple inheritance based tuple instead
2014-11-04 09:02:31 -05:00
Louis Dionne
57087cd249
Functional: make lockstep's syntax like demux's
2014-11-04 08:54:59 -05:00
Louis Dionne
647ad436b0
Reorganize the unit tests and increase the overall coverage.
2014-11-04 08:54:58 -05:00
Louis Dionne
217e1d2b46
Add BOOST_HANA_ASSERT.
2014-11-03 10:22:19 -05:00
Louis Dionne
f33c23b67e
Add an alternative tuple implementation using multiple inheritance.
2014-11-03 10:22:19 -05:00
Louis Dionne
d188e19938
Make functional utilities constexpr friendly
2014-10-28 14:38:49 -04:00
Louis Dionne
8590ce9376
Add detail::reverse_partial
2014-10-28 14:38:49 -04:00
Louis Dionne
ce06df1a68
Make test::numeric constexpr-friendly.
2014-10-28 14:22:59 -04:00
Louis Dionne
c37916cdd4
Make variadic folds function objects.
2014-10-28 14:22:59 -04:00
Louis Dionne
f6af15fe31
Update fix's test
2014-10-28 14:22:59 -04:00
Louis Dionne
a6310a046d
Simplify the closure type
2014-10-28 14:22:58 -04:00
Louis Dionne
629b487d4c
Add the detail::create utility.
2014-10-28 13:51:05 -04:00
Louis Dionne
ca821c9455
Move Searchable::list_mcd to Searchable::iterable_mcd.
2014-10-27 17:27:54 -04:00
Louis Dionne
eddece8d00
Use the nested hana struct to define enabled operators.
2014-10-27 16:31:03 -04:00
Louis Dionne
cc8455dd65
Use the nested hana struct to instantiate unary type classes.
2014-10-27 16:14:02 -04:00
Louis Dionne
220d92ed82
Use a nested hana struct to customize stuff inside user defined objects.
2014-10-27 15:24:14 -04:00
Louis Dionne
a9743f3dde
Add the Ring::power method.
2014-10-27 14:59:20 -04:00
Louis Dionne
087f48010d
Fix typo in test::CNumeric.
2014-10-27 14:59:20 -04:00
Louis Dionne
c2541c3713
Add detail::closure based on multiple-inheritance
2014-10-25 14:34:31 -04:00
Louis Dionne
b26406d649
Simplify the header hierarchy: too modular isn't good.
...
This essentially undo parts of 307d3d0
. While it seemed a like good
idea to over-modularize type classes to reduce header dependencies, I
think it was a mistake. What 307d3d0
did was basically split each of
the components of a type class into a single header (typeclass/operators.hpp,
typeclass/mcd_1.hpp, typeclass/mcd_2.hpp, ...).
At first, it resolved many weird header dependency glitches. However, it
also made everything more complex; creating even easy type classes was
sometimes much longer than it should have been, and using type classes
was tricky because you had to know exactly what to include. It also went
against the idea of implicit type class instances being provided whenever
that's possible, which I think is a nice feature of the library. Being
dissatisfied with this, I opted for a simpler header organization with
a fwd/ directory that contains forward declaration headers, and everything
else in the same directory.
A possible objection to this change would be that you are now forced
to include sometimes more than what you strictly need when e.g. defining
an instance or using only some instance(s) of a data type. My answer to
this is that Hana is a really small library and the parsing is not
going to have a huge impact on overall compilation time. My bet is that
the time that will be saved by programmers with a simple header hierarchy
outweights the parsing time by far.
2014-10-25 09:47:05 -04:00
Louis Dionne
a74bb80490
Type: clean up and remove misplaced functionality
...
The ability to construct objects of a type T by calling the type<T>
object was removed; make<T> should be used instead.
2014-10-22 12:27:33 -04:00
Louis Dionne
e6c16a1394
Add more laws to Functor.
2014-10-22 10:43:16 -04:00
Louis Dionne
806b941603
Instantiate Searchable and Iterable with String.
2014-10-21 23:53:28 -04:00
Louis Dionne
e70e06c831
Add support for std::ratio.
2014-10-20 11:50:43 -04:00
Louis Dionne
ac528b81ba
Add the insert function to Set.
2014-10-17 18:29:50 -04:00
Louis Dionne
b09096c11f
Split ext/ integral constants into different files.
2014-10-17 16:31:16 -04:00
Louis Dionne
653d083eb0
Instantiate Foldable and Orderable with String.
2014-10-17 10:23:31 -04:00
Louis Dionne
f4276a5dcf
Remove outdated operator_ experiment.
2014-10-17 09:31:01 -04:00
Louis Dionne
716ff897cc
Add the Enumerable type class.
2014-10-16 20:52:29 -04:00
Louis Dionne
d496ec6bbc
Change the syntax of demux
.
2014-10-16 19:32:09 -04:00
Louis Dionne
f0d9e9b9bb
Add the intersperse method to List.
2014-10-16 16:56:39 -04:00
Louis Dionne
1280806839
Provide an instance of Foldable for Products.
2014-10-16 08:43:08 -04:00
Louis Dionne
177a7f11f3
Add an overload utility to the sandbox.
2014-10-14 17:38:56 -04:00
Louis Dionne
4335c4915c
Move list/free/convert.hpp to list/convert.hpp
2014-10-11 16:04:12 -04:00
Louis Dionne
002320cdf6
Add variadic take and variadic split_at.
2014-10-11 15:58:04 -04:00
Louis Dionne
88579de954
Allow folding move-only rvalue Records by constraining accessors.
2014-10-11 14:26:39 -04:00
Louis Dionne
5c0755b496
Fix bugs where we default initialized lambdas.
2014-10-08 20:46:10 -04:00
Louis Dionne
4ff5485bd3
Remove workarounds for now-fixed libc++ #19616
2014-10-08 19:31:28 -04:00
Louis Dionne
241671ef0e
Add perfect forwarding in some functional utilities
2014-10-05 15:14:22 -04:00
Louis Dionne
7338838d46
Allow template types with multiple arguments in BOOST_HANA_DEFINE_RECORD.
2014-10-05 01:30:37 -04:00
Louis Dionne
0c1dd29224
Improve some conversion operators.
...
- Add perfect forwarding
- Allow Maps and Sets to be created from Foldables instead of Lists
2014-10-04 22:58:39 -04:00
Louis Dionne
1104f76d48
Add perfect forwarding in some places in Tuple
2014-10-04 20:13:14 -04:00
Louis Dionne
a7b28bddd8
Add more perfect forwarding and do some refactoring.
2014-10-02 21:05:01 -04:00
Louis Dionne
e7b48ee23c
Use compile-time strings as keys in records
2014-09-30 10:42:55 -04:00
Louis Dionne
c184a742fb
Add compile-time strings
2014-09-30 10:23:45 -04:00
Louis Dionne
d06cd559ba
Add the times method to Integrals
2014-09-29 16:31:59 -04:00
Louis Dionne
539ed83248
Fix a dangling reference bug in functional/id.
2014-09-29 11:15:00 -04:00
Louis Dionne
a434f561d4
Add perfect forwarding in variadic folds and for_each.
2014-09-26 15:29:36 -04:00
Louis Dionne
a44e9b8d17
Benchmark a different way of reversing a parameter pack.
2014-09-22 11:13:28 -04:00
Louis Dionne
a7525b71e3
Fixes #8
2014-09-16 19:41:06 -04:00
Louis Dionne
18fef19050
List: add the repeat method
2014-09-11 08:22:12 -07:00
Louis Dionne
2689a3733f
Add compile-time strings
2014-09-10 17:54:11 -07:00
Louis Dionne
9fbf074c55
Record: refactor macros to make them more user-friendly
2014-09-09 13:01:11 -07:00
Louis Dionne
a6d4511684
Record: Allow the intrusive macro to be used inside a function.
2014-09-09 10:43:25 -07:00
Louis Dionne
1b021fcd89
Record: Allow instantiating with macros.
2014-09-09 10:32:04 -07:00
Louis Dionne
3bb1bb9c6b
Allow instantiating unary type classes from a data type.
2014-09-08 22:39:10 -07:00
Louis Dionne
f272196bdc
Sandbox: Add a Rose-tree
2014-09-07 08:22:08 -07:00
Louis Dionne
0065ced91d
Add operator[] for Tuple and Range.
2014-09-05 17:02:50 -04:00
Louis Dionne
7a3dd8ae8a
Example: Add the homogeneous Matrix example for CppCon.
2014-09-04 09:30:12 -04:00
Louis Dionne
3da09cc73e
Core: is_a also allows checking for data types
2014-09-03 09:21:59 -04:00
Louis Dionne
943c59c0a1
Refactor benchmarks.
2014-09-02 13:21:51 -04:00
Louis Dionne
2d10fb461a
Use minimal includes in unit tests.
2014-09-01 18:14:55 -04:00
Louis Dionne
980cda48ef
Detail: add variadic::drop_into
2014-09-01 10:02:45 -04:00
Louis Dionne
118ca61066
Range: optimize the Foldable instance and fix includes
2014-08-31 20:27:23 -04:00
Louis Dionne
faef709431
Minor improvements:
...
- Test that detail::variadic::at can handle const objects
- Add perfect forwarding in functional/id
- Sandbox: experiment with a std compatible tuple
2014-08-31 10:16:03 -04:00
Louis Dionne
af0e2444ed
Set: fix the Comparable instance so it works with runtime keys
2014-08-30 14:25:56 -04:00
Louis Dionne
fadb7a2af0
Core: document how operators work.
2014-08-29 11:18:26 -04:00
Louis Dionne
26af39f3d9
Flip the arguments of several methods.
...
Flipped:
- traverse
- fmap, adjust, fill, replace
- drop_while, drop_until
- take_while, take_until
2014-08-29 10:24:19 -04:00