使用boost::mp11::mp_reverse_fold算法实现序列的反向折叠
boost::mp11是 Boost C++ 库中提供的一组元编程工具,在使用模板元编程时能够带来极大的便利。其中,mp_reverse_fold算法可以将一个序列通过指定的操作从后往前折叠,实现对序列的反向处理。
下面是一个使用boost::mp11::mp_reverse_fold算法实现序列反向折叠的示例程序:
#include<boost/mp11.hpp>
#include<iostream>
#include<type_traits>
namespace mp = boost::mp11;
template<typename T>
using add_pointer_t = std::add_pointer_t<T>;
template<typename T>
using add_const_t = std::add_const_t<T>;
template<typename T>
using remove_reference_t = std::remove_reference_t<T>;
int main()
{
//定义一个类型序列
using seq = mp::mp_list<int, char, bool, long>;
//将seq中的元素全部转换为const int *
using result = mp::mp_reverse_fold<seq, mp::mp_list<>, mp::mp_bind_back<mp::mp_push_back, add_pointer_t<add_const_t<_1>>>>;
//输出结果
std::cout << typeid(result).name() << '