mirror of
https://github.com/boostorg/preprocessor.git
synced 2025-07-13 20:46:34 +02:00
MWCW workaround
[SVN r12506]
This commit is contained in:
@ -21,14 +21,18 @@
|
|||||||
// Template metaprogramming can be used for implementing similar
|
// Template metaprogramming can be used for implementing similar
|
||||||
// delays. Unfortunately template instantiation consumes memory,
|
// delays. Unfortunately template instantiation consumes memory,
|
||||||
// therefore compilers usually fail to fully compile long template
|
// therefore compilers usually fail to fully compile long template
|
||||||
// based delays, because they run out of memory. This macro takes
|
// based delays, because they run out of memory.
|
||||||
// only small (O(N)) amount of memory to preprocess.
|
//
|
||||||
|
// On many compilers (e.g. g++, MSVC++), this macro takes only a
|
||||||
|
// small amount of memory to preprocess. On some compilers (e.g.
|
||||||
|
// MWCW), however, this macro seems to consume huge amounts of
|
||||||
|
// memory.
|
||||||
|
|
||||||
#ifndef DELAY_MAX
|
#ifndef DELAY_MAX
|
||||||
#define DELAY_MAX 16
|
#define DELAY_MAX 16
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DELAY(N) BOOST_PP_IF(1,BOOST_PP_EMPTY,BOOST_PP_WHILE(DELAY_C,BOOST_PP_CAT(DELAY_F,N),BOOST_PP_DEC(N)))()
|
#define DELAY(N) BOOST_PP_TUPLE_ELEM(2,0,(BOOST_PP_EMPTY,BOOST_PP_WHILE(DELAY_C,BOOST_PP_CAT(DELAY_F,N),BOOST_PP_DEC(N))))()
|
||||||
#define DELAY_C(D,N) N
|
#define DELAY_C(D,N) N
|
||||||
#define DELAY_F0(D,N) BOOST_PP_IF(1,BOOST_PP_DEC(N),BOOST_PP_WHILE##D(DELAY_C,DELAY_F##N,BOOST_PP_DEC(N)))
|
#define DELAY_F0(D,N) BOOST_PP_IF(1,BOOST_PP_DEC(N),BOOST_PP_WHILE##D(DELAY_C,DELAY_F##N,BOOST_PP_DEC(N)))
|
||||||
#define DELAY_F1(D,N) BOOST_PP_IF(1,BOOST_PP_DEC(N),BOOST_PP_WHILE##D(DELAY_C,DELAY_F##N,BOOST_PP_DEC(N)))
|
#define DELAY_F1(D,N) BOOST_PP_IF(1,BOOST_PP_DEC(N),BOOST_PP_WHILE##D(DELAY_C,DELAY_F##N,BOOST_PP_DEC(N)))
|
||||||
|
Reference in New Issue
Block a user