Commit Graph

222 Commits

Author SHA1 Message Date
Peter Dimov
3d17ab059f Do not include mpl.hpp in mp11.hpp 2017-07-20 19:16:41 +03:00
Peter Dimov
695e9234f9 Add MPL support 2017-07-18 16:37:31 +03:00
Peter Dimov
34946d2ae2 Add mp_is_map 2017-07-17 20:14:43 +03:00
Peter Dimov
50d35a2964 Add mp_map_keys 2017-07-17 19:46:51 +03:00
Peter Dimov
27d0d547ee Add mp_is_set 2017-07-17 19:28:36 +03:00
Peter Dimov
d5e39913c8 Add mp_quote_trait 2017-06-26 16:07:23 +03:00
Peter Dimov
464eee9596 Make primary templates in list.hpp empty instead of undefined, add error comments 2017-06-17 19:33:16 +03:00
Peter Dimov
d9c4308d9d Add list_size_mismatch which produces a better error message from mp_transform 2017-06-17 19:14:47 +03:00
Peter Dimov
e926c4ce62 Change mp_identity_t to be non-transparent, for consistency 2017-06-10 04:13:39 +03:00
Peter Dimov
cae6f966dc Rename make_from_tuple to construct_from_tuple 2017-06-08 19:22:53 +03:00
Peter Dimov
08777edbc1 Add make_from_tuple 2017-06-08 17:42:50 +03:00
Peter Dimov
359ae25630 Add tuple_apply 2017-06-08 17:19:28 +03:00
Peter Dimov
97720ed72d Rename tuple_for_each.hpp to tuple.hpp 2017-06-08 16:35:55 +03:00
Peter Dimov
592a4706a6 Update mp11_single.hpp 2017-06-02 19:25:52 +03:00
Peter Dimov
cde9259b1a Rename mp_for_index to mp_with_index 2017-06-02 18:20:37 +03:00
Peter Dimov
7f9f4c31e2 Avoid unused argument warning 2017-06-01 19:33:32 +03:00
Peter Dimov
0e099c4398 Add mp11_single.hpp 2017-06-01 17:17:31 +03:00
Peter Dimov
b8bbd279b2 Make mp_for_each constexpr under C++14 2017-05-31 23:44:24 +03:00
Peter Dimov
3cce995877 Rename mp_for_index_c to mp_for_index 2017-05-31 23:18:08 +03:00
Peter Dimov
1bd4b670ce Avoid control reaches end of non-void function warnings 2017-05-31 20:16:41 +03:00
Peter Dimov
e6c28a0848 Add mp_for_index 2017-05-31 19:56:18 +03:00
Peter Dimov
d78cf71a97 Revert previous; disable problematic test on 4.7/4.8 instead 2017-05-31 09:09:05 +03:00
Peter Dimov
5733185780 Try a g++ 4.7/4.8 workaround 2017-05-31 08:40:41 +03:00
Peter Dimov
a47c6e3c57 g++7.1 doesn't quite like mp_all, too; and 5 and earlier also fail in a different way 2017-05-31 07:57:02 +03:00
Peter Dimov
a768587c7d g++6 doesn't like mp_any either 2017-05-31 07:22:31 +03:00
Peter Dimov
9a69b1213c g++ 6 has problems with mp_and 2017-05-31 07:08:56 +03:00
Peter Dimov
f6d92069a9 Make mp_at SFINAE-friendly 2017-05-29 05:56:55 +03:00
Peter Dimov
c7923ca041 Change back mp_for_each to not use mp_identity 2017-05-29 03:04:12 +03:00
Peter Dimov
edcff6fa6f Add test for mp_transform_q 2017-05-25 21:51:40 +03:00
Peter Dimov
6db4019341 Add mp_transform_if_q 2017-05-25 21:31:03 +03:00
Peter Dimov
0e0d7fae4e Enable fold expressions on g++ 2017-05-24 06:16:17 +03:00
Peter Dimov
e81ce26bf9 Use fold expressions in mp_all, mp_any 2017-05-24 05:59:15 +03:00
Peter Dimov
fc562c7421 Fix mp_all on g++ 4.7 2017-05-24 04:59:15 +03:00
Peter Dimov
ecd77ab9fa Make mp_all fail when ::value is invalid for some type 2017-05-24 04:27:36 +03:00
Peter Dimov
b306ab25aa Do not use auto on g++ 4.7 in mp_plus 2017-05-24 03:47:24 +03:00
Peter Dimov
2bd7393365 Use fold expressions in mp_plus 2017-05-24 02:50:43 +03:00
Peter Dimov
3e40aacce5 Document mp_plus 2017-05-24 01:52:11 +03:00
Peter Dimov
6b1a2f6156 Revert mp_or; add mp_void; update documentation 2017-05-24 01:37:49 +03:00
Peter Dimov
07cac40f3d Change mp_and/mp_or to a SFINAE-based implementation 2017-05-23 23:25:30 +03:00
Peter Dimov
29a771aa4e Move integer_sequence and tuple_for_each into mp11 2017-05-23 20:24:37 +03:00
Peter Dimov
eac1bf28a5 Unextend mp_invoke g++ 4.x workaround 2017-05-19 16:22:41 +03:00
Peter Dimov
29c4b601b4 Extend msvc-12.0 mp_invoke workaround to g++ 4.x 2017-05-19 15:59:17 +03:00
Peter Dimov
7100d10c7e Make mp_infoke SFINAE-friendly 2017-05-19 15:37:49 +03:00
Peter Dimov
1d1be2bbf4 Add mp_eval_if_q 2017-05-19 03:22:53 +03:00
Peter Dimov
3cc44323e9 Second try to fix g++ 4.7 2017-05-19 01:13:09 +03:00
Peter Dimov
ec9d43e7e9 Try to fix g++ 4.7 2017-05-19 01:00:56 +03:00
Peter Dimov
02385ac83d SFINAE-fail mp_transform on lists of different sizes 2017-05-18 16:13:55 +03:00
Peter Dimov
611ea810bd SFINAE-fail mp_eval_if when F<U...> is invalid 2017-05-18 15:22:05 +03:00
Peter Dimov
37bbb15375 Make the E parameter of mp_if optional 2017-05-18 14:59:46 +03:00
Peter Dimov
15e45290d0 Add mp_insert, mp_erase 2017-05-13 21:52:56 +03:00
Peter Dimov
647f669353 Add mp_product_q, update documentation 2017-05-13 21:07:54 +03:00
Peter Dimov
893d84fda2 Add mp_for_each 2017-05-13 00:10:50 +03:00
Peter Dimov
d97b21261f Add tests for tuple_for_each and empty tuples 2017-05-12 23:37:37 +03:00
Peter Dimov
9fbf51bbcb Remove bind_front functionality from mp_quote 2017-05-12 19:43:03 +03:00
Peter Dimov
543a0f755e Add mp_apply_q 2017-05-12 19:21:27 +03:00
Peter Dimov
939a3b949d Add mp_bind_q, mp_bind_front(_q), mp_bind_back(_q), mp_transform_q 2017-05-09 20:53:00 +03:00
Peter Dimov
4521eff93c Cast the result of f() to void (avoid op,) 2017-05-08 18:59:19 +03:00
Peter Dimov
28c420edf7 Add mp_same. 2017-04-01 20:01:51 +03:00
Peter Dimov
b02e9fbacc Add mp_bind. 2017-04-01 18:42:11 +03:00
Peter Dimov
c92d314009 Implement mp_transform_if in terms of mp_transform 2017-04-01 18:08:19 +03:00
Peter Dimov
fcbe835f4b Add a variadic mp_transform implementation 2017-04-01 17:39:02 +03:00
Peter Dimov
e871f0c30c Optimize mp_append. 2017-03-27 02:00:48 +03:00
Peter Dimov
3cd3a916a8 Use __type_pack_element in mp_at(_c) 2017-03-25 20:32:40 +02:00
Peter Dimov
3242fdb134 Use narrowing instead of static_assert in mp_take 2017-03-24 19:12:13 +02:00
Peter Dimov
c059b1ea3f Use narrowing instead of static_assert in mp_repeat 2017-03-24 19:00:52 +02:00
Peter Dimov
946861bb63 Make mp_replace(_if) SFINAE-friendlier. 2017-03-24 18:47:55 +02:00
Peter Dimov
d3f4b099d2 Unroll mp_reverse_fold. 2017-03-24 18:10:07 +02:00
Peter Dimov
e488469e9a Unroll mp_fold. 2017-03-24 17:21:38 +02:00
Peter Dimov
2bf9bad934 Unroll mp_reverse a bit more. 2017-03-24 16:55:06 +02:00
Peter Dimov
c1485d5d51 Improve mp_copy_if, mp_remove(_if), mp_partition 2017-03-24 15:22:10 +02:00
Peter Dimov
42b4561725 Add mp_apply as an alias for mp_rename 2017-03-24 14:26:31 +02:00
Peter Dimov
828dadb167 Unroll mp_append a bit. 2017-03-24 01:15:44 +02:00
Peter Dimov
848c2ff82c Add fold expr implementations of mp_count, mp_count_if 2017-03-23 19:34:43 +02:00
Peter Dimov
72c9c49224 Unroll cx_plus a bit. 2017-03-23 19:22:42 +02:00
Peter Dimov
32938df318 Less clever, much faster, mp_take 2017-03-22 02:03:39 +02:00
Peter Dimov
321a54728f Add indirection in mp_quote to enable expansions of T... into a fixed parameter list 2017-03-20 16:55:00 +02:00
Peter Dimov
71ba80d18a Rename ::invoke to ::fn 2017-03-20 16:23:52 +02:00
Peter Dimov
7e8d618793 Add mp_replace_at(_c) 2017-03-18 20:20:31 +02:00
Peter Dimov
79f8c574f3 Add mp_replace_{front,first,second,third} 2017-03-18 19:58:38 +02:00
Peter Dimov
8e053269a8 Make mp_transform_if variadic. 2017-03-18 19:48:07 +02:00
Peter Dimov
e1edd90c21 Fix clang 3.9 -std=c++1z failures 2017-03-18 01:05:54 +02:00
Peter Dimov
946937b5ab Rename Q::apply to Q::invoke, mp_unquote to mp_invoke. 2017-03-16 21:14:42 +02:00
Peter Dimov
e4f7488652 Change mp_and and mp_or to match std::conjuction and std::disjunction 2017-03-16 17:49:57 +02:00
Peter Dimov
7bbdaacda1 Remove mp_equal_to. 2017-03-16 17:35:47 +02:00
Peter Dimov
a231733c7e Move everything to namespace mp11 2017-03-15 21:23:15 +02:00
Peter Dimov
adaa60dbc2 Rename mp_find_index to mp_find 2017-03-15 20:03:56 +02:00
Peter Dimov
8d9e6f50dd Add arguments to mp_quote, allowing partial application 2017-03-15 18:09:30 +02:00
Peter Dimov
5a4fb7f832 Fix function application in mp_map_update 2017-03-14 22:40:47 +02:00
Peter Dimov
6fb4cee7b2 Add mp_transform_if, mp_map_update 2017-03-14 16:32:17 +02:00
Peter Dimov
c054b2b2fe Add mp_map_erase. 2017-03-14 02:56:32 +02:00
Peter Dimov
586392ca51 VC++2017 still needs the workarounds. 2017-03-14 00:35:19 +02:00
Peter Dimov
42405ac701 Add mp_map_replace. 2016-11-17 03:38:24 +02:00
Peter Dimov
4a7008562f Add mp_map_insert. 2016-11-17 02:51:12 +02:00
Peter Dimov
9735300f85 Add mp_map_find. 2016-11-17 02:01:50 +02:00
Peter Dimov
7a0f4001e7 Add mp_all, mp_and, mp_any, mp_or; move mp_not to integral.hpp. 2016-11-16 21:24:13 +02:00
Peter Dimov
cc3d54a857 Do not use function.hpp in algorithm.hpp. 2016-11-16 19:55:35 +02:00
Peter Dimov
29d030ac59 Add mp_all_of, mp_any_of, mp_none_of. 2016-11-16 04:19:37 +02:00
Peter Dimov
37f088a5bc Boost.Config no longer defines BOOST_NO_CXX11_CONSTEXPR for VS2015u3 2016-10-23 18:16:55 +03:00
Peter Dimov
6af4bbc113 Add mp_quote, mp_unquote. 2015-07-26 17:55:05 +03:00
Peter Dimov
e51ed6cf3d Remove mp_defer_if_valid; add mp_identity_t. 2015-07-26 17:43:00 +03:00
Peter Dimov
bd9e5f9c41 Add some algorithm names to be implemented. 2015-07-24 13:54:30 +03:00
Peter Dimov
e6f83a0d33 Add mp_unique. 2015-07-24 13:45:08 +03:00
Peter Dimov
26575249ff Add mp_set_contains, mp_set_push_back, mp_set_push_front. 2015-07-24 13:19:17 +03:00
Peter Dimov
5de3bf8810 Add mp_fold, mp_reverse_fold. 2015-07-24 02:11:40 +03:00
Peter Dimov
67ef9ab3fb Add mp_remove, mp_reverse. 2015-07-24 01:17:16 +03:00
Peter Dimov
b5d9b95709 Extend msvc-12.0 workarounds to msvc-14.0 as needed. 2015-07-23 18:35:25 +03:00
Peter Dimov
a2dccfd6ae Add skeleton headers for things not yet implemented. 2015-07-16 18:12:06 +03:00
Peter Dimov
61b897e857 Add mp_valid, mp_defer, mp_defer_if_valid. 2015-07-16 00:40:40 +03:00
Peter Dimov
dcd8d41ffc Move implementation details to namespace detail. 2015-07-15 23:38:33 +03:00
Peter Dimov
c9d1562cee Add mp_find, mp_find_if. 2015-07-15 18:11:16 +03:00
Peter Dimov
f1b097eb06 Add mp_find_index_if. 2015-07-15 17:30:07 +03:00
Peter Dimov
856ae3dc6c Add mp_find_index. 2015-07-15 17:14:00 +03:00
Peter Dimov
baaead6860 Add mp_copy_if, mp_remove_if, mp_partition, mp_sort. 2015-06-24 16:05:47 +03:00
Peter Dimov
05ab3e7a42 Add tuple_for_each. 2015-06-24 14:57:32 +03:00
Peter Dimov
4a33810f9b Add mp_replace, mp_replace_if. 2015-06-23 16:26:56 +03:00
Peter Dimov
4094f2f73f Add mp_iota, mp_at, mp_take. 2015-06-22 03:37:15 +03:00
Peter Dimov
8bf6feb206 Add mp_drop. 2015-06-22 02:42:37 +03:00
Peter Dimov
cf49d00e45 Add integer_sequence.hpp. 2015-06-22 02:23:20 +03:00
Peter Dimov
d5f6ca8eb6 Add mp_product. 2015-06-22 00:46:24 +03:00
Peter Dimov
138e4de0a8 Add tests for mp_count, mp_count_if. 2015-06-22 00:06:50 +03:00
Peter Dimov
b4c3f29917 Move algorithms to algorithm.hpp. 2015-06-21 20:47:04 +03:00
Peter Dimov
686e398e56 Initial commit. 2015-06-21 19:53:23 +03:00