C+14 make_INTEGER序列的实现
make_integer_sequence
integer_sequence
.
template< class T, T... I> struct integer_sequence{ typedef T value_type; static constexpr size_t size() noexcept { return sizeof...(I) ; }}; template< class T, T N>using make_integer_sequence = integer_sequence< T, 0,1,2, ... ,N-1 >; // only for illustration.
make_integer_sequence
make_helper
.
template< class T , class N >using make_integer_sequence = typename make_helper<T,N>::type;
make_helper
template< class T, T N, T... I >struct make_helper{ typedef typename mpl::if_< T(0) == N, mpl::identity< integer_sequence<T,I...> >, make_helper< T, N-1, N-1,I...> >::type;};
make_integer_sequence
int main(){ #define GEN(z,n,temp) \ typedef make_integer_sequence< int, n > BOOST_PP_CAT(int_seq,n) ; BOOST_PP_REPEAT(256, GEN, ~);}
int main() {#define GEN(z,n,temp) \typedef make_integer_sequence< int, n * 4 > BOOST_PP_CAT(int_seq, n) ;BOOST_PP_REPEAT(256, GEN, ~ );}
虚拟内存耗尽。
int main(){ typedef make_integer_sequence< int, 4096 > int_seq4096;}
int main(){ typedef make_integer_sequence< int, 16384 > int_seq16384;}
虚拟内存耗尽。
森栏
慕无忌1623718
相关分类