C+14 make_INTEGER序列的实现
make_integer_sequenceinteger_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_sequencemake_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
随时随地看视频慕课网APP
相关分类