使用boost::mp11::mp_pairwise_fold的示例代码
boost::mp11是一个用于元编程的C++库,其中包含了很多有用的工具。其中,mp_pairwise_fold是一个用于对序列中的元素进行两两配对并执行指定操作的函数。
下面是一个使用mp_pairwise_fold函数的示例代码,该代码用于计算序列中相邻元素的和:
#include <boost/mp11.hpp>
#include <iostream>
namespace mp = boost::mp11;
template<typename T, T... Args>
auto sum(mp::mp_list<std::integral_constant<T, Args>...>)
{
return mp::mp_pairwise_fold<
mp::mp_list<std::integral_constant<T, Args>...>,
std::integral_constant<T, 0>,
mp::mp_bind_back<mp::mp_transform, std::plus<>>
>();
}
int main()
{
using list = mp::mp_list<std::integral_constant<int, 1>,