compiler | gcc-12 | clang-15
before | 0:00.46s - 187160K | 0:00.38s - 129104K
after | 0:00.21s - 80236K | 0:00.33s - 123644K
```cpp
using namespace boost::mp11;
template<class L, class M = mp_transform<mp_list, L>>
struct f { template<class I> using g = mp_map_replace<M, mp_list<I, 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<30>>;
```
compiler | gcc-15 | clang-20
before | 0:00.23s - 76088K | 0:00.37s - 116984K
after | 0:00.22s - 75348K | 0:00.35s - 114952K
```cpp
template<class> using pred = mp_false;
template<class I, class L = mp_iota<I>> using test
= mp_replace_if<L, pred, I>;
using r1 = mp_transform<test, mp_iota_c<120>>;
```
compiler | gcc-15 | clang-20
before | 0:00.30s - 90020K | 0:00.48s - 129272K
after | 0:00.29s - 89428K | 0:00.46s - 126580K
```cpp
template<class I, class L = mp_iota<I>> using test
= mp_replace<L, I, I>;
using r1 = mp_transform<test, mp_iota_c<120>>;
```
compiler | gcc-15 | clang-20
before | 0:00.32s - 91276K | 0:00.69s - 156512K
after | 0:00.31s - 90684K | 0:00.67s - 157560K
```cpp
template<class> using pred = mp_true;
template<class I, class L = mp_iota<I>> using test
= mp_remove<L, I>;
using r1 = mp_transform<test, mp_iota_c<120>>;
```
compiler | gcc-15 | clang-20
before | 0:00.21s - 65820K | 0:00.51s - 138048K
after | 0:00.21s - 65428K | 0:00.49s - 138540K
```cpp
template<class> using pred = mp_false;
template<class I, class L = mp_iota<I>> using test
= mp_copy_if<L, pred>;
using r1 = mp_transform<test, mp_iota_c<120>>;
```
compiler | gcc-15 | clang-20
before | 0:00.21s - 67308K | 0:00.51s - 137744K
after | 0:00.21s - 66956K | 0:00.49s - 138492K
```cpp
template<class> using pred = mp_true;
template<class I, class L = mp_iota<I>> using test
= mp_remove_if<L, pred>;
using r1 = mp_transform<test, mp_iota_c<120>>;
```
Use the `__integer_pack` builtin
compiler | gcc-15
before | 0:00.14s - 47284K
after | 0:00.07s - 37572K
```cpp
template<class I> using test
= make_integer_sequence<int, I::value>;
using r1 = mp_transform<test, mp_iota_c<200>>;
```
* added mp_lambda
* launched GHA
* skipped ICE-generating test in GCC < 4.9
* fixed GCC detection in workaround
* test-skipped and documented GCC 4.8 bug
* added missing s/const/CONST
* tempirarily expanded macro to isolate problem with VS2017
* tried workaround for C3546
* tried another workaround
* wrapped workaround up
* dropped unnecessary devoiding in variadic (member) functions
* temporary code to check VS compliance wrt function qualifiers
* removed version printer
* checked compliance with qualified (member) function partial specialization
* checked each partial specialization individually
* wrapped up VS2013 investigation
* left variadics out of VS2013
* skipped noexcept-involving tests for VS2013 (keyword not supported)
* given up on VS2013 support for mp_lambda
* dropped lambda_devoid_args