Jonathan Poelen
de54a2b597
optimize mp_map_update (extract f from the struct to benefit from memoization)
...
compiler | gcc-12 | clang-15
before | 0:00.73s - 270224K | 0:00.54s - 156112K
after | 0:00.19s - 85004K | 0:00.29s - 119232K
```cpp
using namespace boost::mp11;
template<class L, class M = mp_transform<mp_list, L>>
struct f { template<class I> using g = mp_map_update<M, mp_list<I>, mp_list>; };
template<class I, class L = mp_iota<I>> using test
= mp_transform<f<L>::template g, L>;
using r1 = mp_transform<test, mp_iota_c<20>>;
```
2025-11-09 20:33:36 +01:00
Jonathan Poelen
7fe439513e
optimize mp_map_find (extract f from the struct to benefit from memoization)
...
compiler | gcc-12 | clang-15
before | 0:00.29s - 128600K | 0:00.25s - 120604K
after | 0:00.22s - 99908K | 0:00.23s - 116084K
```cpp
using namespace boost::mp11;
template<class L, class M = mp_transform<mp_list, L>>
struct f { template<class I> using g = mp_map_find<M, I>; };
template<class I, class L = mp_iota<I>> using test
= mp_transform<f<L>::template g, L>;
using r1 = mp_transform<test, mp_iota_c<50>>;
```
2025-11-09 20:33:36 +01:00
Jonathan Poelen
f6768fef35
optimize mp_power_set (extract f from the struct to benefit from memoization)
...
compiler | gcc-12 | clang-15
before | 0:01.35s - 538732K | 0:00.65s - 203924K
after | 0:01.02s - 396032K | 0:00.65s - 203080K
```cpp
using namespace boost::mp11;
template<class I> using test = mp_power_set<mp_iota<I>>;
using r1 = mp_transform<test, mp_iota_c<15>>;
```
2025-11-09 20:33:36 +01:00
Jonathan Poelen
a76ce80d1a
optimize mp_replace_at (extract f from the struct to benefit from memoization)
...
compiler | gcc-12 | clang-15
before | 0:00.34s - 134428K | 0:00.33s - 124720K
after | 0:00.29s - 116920K | 0:00.32s - 122568K
```cpp
using namespace boost::mp11;
template<class I> using f = mp_replace_at<mp_iota<I>, I, void>;
template<class I> using test = mp_transform<f, mp_iota<I>>;
using r1 = mp_transform<test, mp_iota_c<50>>;
```
2025-11-09 20:33:36 +01:00
Jonathan Poelen
88314f6877
optimize mp_sort (extract f from the struct to benefit from memoization)
...
compiler | gcc-12 | clang-15
before | 0:00.46s - 198848K | 0:00.49s - 132632K
after | 0:00.42s - 183384K | 0:00.48s - 131748K
```cpp
using namespace boost::mp11;
template<class I> using test = mp_sort<mp_iota<I>, mp_less>;
using r1 = mp_transform<test, mp_iota_c<25>>;
```
2025-11-09 20:33:36 +01:00
Jonathan Poelen
225f67982c
optimize mp_drop (extract f from the struct to benefit from memoization)
...
compiler | gcc-12 | clang-15
before | 0:00.48s - 192464K | 0:00.48s - 154480K
after | 0:00.43s - 172472K | 0:00.46s - 150404K
```cpp
template<class L> struct f { template<class I> using g = mp_drop<L, I>; };
template<class I, class L = mp_iota<I>> using test = mp_transform<f<L>::template g, L>;
using r1 = mp_transform<test, mp_iota_c<50>>;
```
2025-11-09 20:33:36 +01:00
Jonathan Poelen
94162fb325
optimize mp_filter (extract f from the struct to benefit from memoization)
...
compiler | gcc-12 | clang-15
before | 0:00.16s - 72460K | 0:00.16s - 102068K
after | 0:00.14s - 61884K | 0:00.16s - 101828K
```cpp
using namespace boost::mp11;
template<class T> using p = mp_bool<T::value & 1>;
template<class I> using test = mp_filter<p, mp_iota<I>>;
using r1 = mp_transform<test, mp_iota_c<50>>;
```
2025-11-09 20:33:36 +01:00
Jonathan Poelen
b21ff00f9b
optimize mp_transform_if (extract f from the struct to benefit from memoization)
...
compiler | gcc-12 | clang-15
before | 0:00.13s - 60432K | 0:00.16s - 100956K
after | 0:00.11s - 47300K | 0:00.16s - 100484K
```cpp
using namespace boost::mp11;
template<class T> using p = mp_bool<T::value & 1>;
template<class T> using f = mp_size_t<T::value + 1>;
template<class I> using test = mp_transform_if<p, f, mp_iota<I>>;
using r1 = mp_transform<test, mp_iota_c<50>>;
```
2025-11-09 20:33:36 +01:00
Peter Dimov
fe7447470d
Update cuda-windows job in ci.yml
boost-1.90.0.beta1
boost-1.90.0
2025-11-03 13:55:57 +02:00
Peter Dimov
6f3796a68c
Update cuda-linux job in ci.yml
2025-11-03 10:57:49 +02:00
Peter Dimov
437ddf60af
Update documentation of mp_transform
2025-11-01 14:12:53 +02:00
Peter Dimov
24441db797
Merge pull request #109 from joaquintides/fix/docs
...
fixed definition of list
2025-10-30 10:46:49 +02:00
joaquintides
bd1be41b70
s/template class/class template
2025-10-26 20:46:25 +01:00
joaquintides
2e541a7ee9
fixed definition
2025-10-26 12:00:49 +01:00
Peter Dimov
d8ddd856e8
Update revision history
2025-10-22 11:09:08 +03:00
Peter Dimov
811aa7a0f1
Update mp_reverse_fold to work on fixed size lists. Fixes #108 .
2025-10-21 18:51:31 +03:00
Peter Dimov
d27d821192
Test mp_fold and mp_reverse_fold with std::pair. Refs #108 .
2025-10-21 18:48:33 +03:00
Peter Dimov
50e2a0a1b8
Update version
2025-10-09 18:32:10 +03:00
Peter Dimov
1f3d0bbe0c
Update ci.yml
2025-09-09 16:43:32 +03:00
Peter Dimov
75e0901b40
Fix typo in mp_push_back example. Closes #107 .
2025-09-09 16:37:30 +03:00
Peter Dimov
2fb81c2453
Update version
boost-1.89.0
2025-06-28 08:20:51 +03:00
Peter Dimov
1a99027e8c
Add an alternative implementation of mp_map_find for GCC 14+. Fixes #106 .
2025-05-08 15:50:59 +03:00
Peter Dimov
f8ee448fa5
Add test case from #106 . Refs #106 .
2025-05-08 03:04:21 +03:00
Peter Dimov
7e04eb38f9
Update ci.yml
2025-05-07 21:36:56 +03:00
Peter Dimov
e5da96b9b6
Update revision history
boost-1.88.0.beta1
boost-1.88.0
2025-01-15 19:35:28 +02:00
Peter Dimov
9910ada772
Clang considers the specialization ambiguous in C++17 and above, rewrite. Fixes #103 .
2025-01-07 22:52:07 +02:00
Peter Dimov
7ca1e0a92b
Add a specialization of mp_from_sequence_impl to handle the defaulted offset case. Fixes #103 .
2025-01-07 21:10:14 +02:00
Peter Dimov
e2277a5b2e
Add test/mp_from_sequence_3.cpp. Refs #103 .
2025-01-07 21:08:55 +02:00
Peter Dimov
43fd186a8e
Remove cxxstd=1z from clang-5.0
2024-12-21 22:21:46 +02:00
Peter Dimov
abcb365993
Use N=257 for all compilers lacking C++14 constexpr
2024-12-21 22:03:10 +02:00
Peter Dimov
82533c431e
Do not use fold expressions for mp_find and mp_find_if
2024-12-21 21:48:37 +02:00
Peter Dimov
35435bf206
Add N=1089 test case to test/mp_find_if_q.cpp
2024-12-21 21:40:56 +02:00
Peter Dimov
c08451873c
test/mp_find: Decrease N to 257 for MSVC without constexpr
2024-12-21 21:24:02 +02:00
Peter Dimov
784ff13c6e
Add a test with N=1089 to mp_find.cpp
2024-12-21 21:04:34 +02:00
Peter Dimov
279041fd42
Update version
2024-12-14 02:09:09 +02:00
Peter Dimov
8d4b6eb840
Apply Node20 workaround
2024-12-13 22:45:58 +02:00
Peter Dimov
7a4a2c3661
Update ci.yml
2024-12-13 22:44:53 +02:00
Peter Dimov
b108e01927
Update version
2024-12-13 22:43:40 +02:00
Peter Dimov
b06d0e4062
Merge pull request #100 from joaquintides/feature/improved-perf-mp_is_set
...
Improved performance of `mp_is_set`
2024-11-09 03:46:10 +02:00
joaquintides
28929d9794
kept old impl for msvc 12.0
2024-11-08 22:07:10 +01:00
joaquintides
c2bc9788ca
made mp_is_set<S> robust when S is not a list
2024-11-08 19:50:48 +01:00
joaquintides
13a81c86ee
added missing #include
2024-11-08 19:21:27 +01:00
joaquintides
fb79d23aac
improved performance of mp_is_set
2024-11-08 19:08:50 +01:00
Peter Dimov
1caff7ffa9
Change second occurrence of the same code in mp_count.hpp to match
boost-1.87.0.beta1
boost-1.87.0
2024-10-22 19:50:32 +03:00
Peter Dimov
9b8d36ec84
Merge pull request #98 from tjcw/issue-97
...
Candidate fix
2024-10-22 19:40:17 +03:00
Chris Ward
44a731d868
Candidate fix
...
code without "if constexpr"
2024-10-22 08:59:32 +01:00
Peter Dimov
8ceb48b4c9
Stylistic changes to mp_lambda
2024-10-14 19:37:36 +03:00
Peter Dimov
23fd16647e
Update lambda.adoc
2024-10-14 19:34:55 +03:00
Peter Dimov
cadea3c152
Update revision history
2024-10-14 19:25:30 +03:00
Peter Dimov
e77f73e59e
Update ci.yml
2024-10-14 18:32:19 +03:00