Boost logo

Boost :

From: Christopher Currie (codemonkey_at_[hidden])
Date: 2004-07-15 09:32:46


Paul Mensonides wrote:

> It looks more like a failure in the automatic recursion mechanism (all that NODE
> stuff that you see in the output is from the internals of the binary search on
> available WHILE iterations). First, what happens when you avoid automatic
> recursion in the test case:
>
> #include <boost/preprocessor/arithmetic/add.hpp>
> #include <boost/preprocessor/arithmetic/dec.hpp>
> #include <boost/preprocessor/control/while.hpp>
>
> #define PRED(d, state) state
> #define OP_1(d, state) BOOST_PP_DEC(state)
> #define OP_2(d, state) BOOST_PP_DEC(BOOST_PP_ADD_D(d, BOOST_PP_WHILE_ ## d(PRED,
> OP_1, state), state))
>
> BOOST_PP_WHILE_1(PRED, OP_2, 10) // 0

Looks ok (all these tests are done with only BOOST_PP_CONFIG_BCC() enabled):

$ CC -E -I$HOME/src/boost paul1.cpp
#1 "paul1.cpp"
[header files...]
#9 "paul1.cpp"
0

>
> Second, what is the result of this:
>
> #include <boost/preprocessor/control/while.hpp>
>
> BOOST_PP_WHILE // should be: BOOST_PP_WHILE_1

Again, success:

$ CC -E -I$HOME/src/boost paul2.cpp
#1 "paul2.cpp"
[header files...]
#3 "paul2.cpp"
BOOST_PP_WHILE_1

>>That, combined with some futher investigation, yielded a partial
>>solution: the newest version of the Sun needs to enable
>>BOOST_PP_CONFIG_MSVC, in order for BOOST_PP_BITAND to work properly.
>
>
> What? Does this work?
>
> #include <boost/preprocessor/logical/bitand.hpp>
>
> BOOST_PP_BITAND(0, 0) // 0
> BOOST_PP_BITAND(0, 1) // 0
> BOOST_PP_BITAND(1, 0) // 0
> BOOST_PP_BITAND(1, 1) // 1

Looks fine:

$ CC -E -I$HOME/src/boost paul3.cpp
#1 "paul3.cpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/logical/bitand.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/config/config.hpp"
#3 "paul3.cpp"
0
0
0
1

The test case that I found that broke was this:

#include <boost/preprocessor/control.hpp>

BOOST_PP_WHILE_P(128) // 1?

Resulted in:

$ CC -E -I$HOME/src/boost while_p.cpp
#1 "while_p.cpp"
[ header files ... ]
#3 "while_p.cpp"
BOOST_PP_BITAND_1 1

> If it doesn't, then the Sun preprocessor is more seriously broken than I
> thought.

The trick is that this is a new regression in the Sun preprocessor;
these failings are in the Early Access version of the Sun Studio 9
compiler that has yet to be released. Previous versions do not exhibit
this bug (but they, of course, have a panoply of other impressive
failures and ICEs ...)

> What is the output of list.cpp without any of these flags set (some of these are
> contradictory)?

I've attached it, as it's lengthy. Again, this was run with
BOOST_PP_CONFIG_BCC() set, but none of the others.

Thanks so much for your help in diagnosing this problem.

Christopher

-- 
Christopher Currie <codemonkey_at_[hidden]>

#1 "list.cpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/arithmetic/add.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/arithmetic/dec.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/config/config.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/arithmetic/inc.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/control/while.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/cat.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/debug/error.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/detail/auto_rec.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/control/iif.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/fold_left.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/control/while.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/detail/fold_left.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/control/expr_iif.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/adt.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/detail/is_binary.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/detail/check.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/logical/compl.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/tuple/eat.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/fold_right.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/control/while.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/detail/fold_right.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/reverse.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/logical/bitand.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/control/detail/while.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/logical/bool.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/tuple/elem.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/arithmetic/sub.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/comparison/less.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/comparison/less_equal.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/logical/not.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/comparison/not_equal.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/append.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/at.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/rest_n.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/cat.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/enum.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/for_each_i.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/repetition/for.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/repetition/detail/for.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/tuple/rem.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/punctuation/comma_if.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/control/if.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/facilities/empty.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/punctuation/comma.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/filter.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/first_n.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/for_each.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/for_each_product.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/to_tuple.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/tuple/to_list.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/tuple/reverse.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/size.hpp"
#1 "/home/ccurrie/src/boost/boost/preprocessor/list/transform.hpp"
#1 "/home/ccurrie/src/boost/libs/preprocessor/test/test.h"
#1 "/opt/SUNWspro/prod/include/CC/std/cstdio"
#1 "/usr/include/sys/feature_tests.h"
#13 "/usr/include/sys/feature_tests.h"
#pragma ident "@(#)feature_tests.h 1.18 99/07/26 SMI"
#1 "/usr/include/sys/isa_defs.h"
#9 "/usr/include/sys/isa_defs.h"
#pragma ident "@(#)isa_defs.h 1.20 99/05/04 SMI"
#158
extern "C" {
#380
}
#18 "/usr/include/sys/feature_tests.h"
extern "C" {
#181
}
#1 "/usr/include/iso/stdio_iso.h"
#32 "/usr/include/iso/stdio_iso.h"
#pragma ident "@(#)stdio_iso.h 1.2 99/10/25 SMI"
#1 "/usr/include/sys/va_list.h"
#9 "/usr/include/sys/va_list.h"
#pragma ident "@(#)va_list.h 1.12 99/05/04 SMI"
#22
extern "C" {

typedef void * __va_list ;

}
#1 "/usr/include/stdio_tag.h"
#9 "/usr/include/stdio_tag.h"
#pragma ident "@(#)stdio_tag.h 1.3 98/04/20 SMI"

extern "C" {
#21
typedef struct __FILE __FILE ;

}
#1 "/usr/include/stdio_impl.h"
#9 "/usr/include/stdio_impl.h"
#pragma ident "@(#)stdio_impl.h 1.8 99/06/10 SMI"
#14
extern "C" {
#22
typedef int ssize_t ;
#38
struct __FILE
{

ssize_t _cnt ;
unsigned char * _ptr ;

unsigned char * _base ;
unsigned char _flag ;
unsigned char _file ;
unsigned __orientation : 2 ;
unsigned __ionolock : 1 ;
unsigned __filler : 5 ;
} ;

}
#49 "/usr/include/iso/stdio_iso.h"
extern "C" {
#59
typedef long long __longlong_t ;
#70
namespace std {

typedef __FILE FILE ;
#83
typedef unsigned int size_t ;

typedef long fpos_t ;

}
#147
extern __FILE __iob [ 20 ] ;
#159
namespace std {

extern int remove ( const char * ) ;
extern int rename ( const char * , const char * ) ;
extern FILE * tmpfile ( void ) ;
extern char * tmpnam ( char * ) ;
extern int fclose ( FILE * ) ;
extern int fflush ( FILE * ) ;
extern FILE * fopen ( const char * , const char * ) ;
extern FILE * freopen ( const char * , const char * , FILE * ) ;
extern void setbuf ( FILE * , char * ) ;
extern int setvbuf ( FILE * , char * , int , size_t ) ;

extern int fprintf ( FILE * , const char * , ... ) ;

extern int fscanf ( FILE * , const char * , ... ) ;

extern int printf ( const char * , ... ) ;

extern int scanf ( const char * , ... ) ;

extern int sprintf ( char * , const char * , ... ) ;

extern int sscanf ( const char * , const char * , ... ) ;
extern int vfprintf ( FILE * , const char * , __va_list ) ;
extern int vprintf ( const char * , __va_list ) ;
extern int vsprintf ( char * , const char * , __va_list ) ;
extern int fgetc ( FILE * ) ;
extern char * fgets ( char * , int , FILE * ) ;
extern int fputc ( int , FILE * ) ;
extern int fputs ( const char * , FILE * ) ;
#203
extern char * gets ( char * ) ;
extern int puts ( const char * ) ;
extern int ungetc ( int , FILE * ) ;
extern size_t fread ( void * , size_t , size_t , FILE * ) ;
extern size_t fwrite ( const void * , size_t , size_t , FILE * ) ;
extern int fgetpos ( FILE * , fpos_t * ) ;
extern int fseek ( FILE * , long , int ) ;
extern int fsetpos ( FILE * , const fpos_t * ) ;
extern long ftell ( FILE * ) ;
extern void rewind ( FILE * ) ;
#219
extern void perror ( const char * ) ;

extern int __filbuf ( FILE * ) ;
extern int __flsbuf ( int , FILE * ) ;
#278
}
#288
namespace std {
inline int getc ( FILE * _p ) {
return ( -- _p -> _cnt < 0 ? __filbuf ( _p ) : ( int ) * _p -> _ptr ++ ) ; }
inline int putc ( int _x , FILE * _p ) {
return ( -- _p -> _cnt < 0 ? __flsbuf ( _x , _p )
: ( int ) ( * _p -> _ptr ++ = ( unsigned char ) _x ) ) ; }
}
#308
namespace std {
inline int getchar ( ) { return getc ( ( & __iob [ 0 ] ) ) ; }
inline int putchar ( int _x ) { return putc ( _x , ( & __iob [ 1 ] ) ) ; }
}
#319
namespace std {
inline void clearerr ( FILE * _p ) { _p -> _flag &= ~ ( 0040 | 0020 ) ; }
inline int feof ( FILE * _p ) { return _p -> _flag & 0020 ; }
inline int ferror ( FILE * _p ) { return _p -> _flag & 0040 ; }
}
#336
}
#25 "/home/ccurrie/src/boost/libs/preprocessor/test/test.h"
namespace std { }
using namespace std ;

int main ( void ) {
printf ( "pass " "10:24:22" ) ;
return 0 ;
}
#24 "list.cpp"
typedef int test_24 [ ( ( BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#24
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#24
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_SUB_D , 22 , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) ) == 10 ) == 1 ) ? 1 : - 1 ]
#24
;
typedef int test_25 [ ( ( BOOST_PP_LIST_FOLD_RIGHT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#25
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#25
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_ADD_D , 0 , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) ) == 12 ) == 1 ) ? 1 : - 1 ] ;
#25

typedef int test_26 [ ( ( BOOST_PP_LIST_FOLD_RIGHT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#26
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#26
) ( BOOST_PP_WHILE_P ) ( REVERSAL , 0 , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) ) == 4 ) == 1 ) ? 1 : - 1 ] ;

typedef int test_30 [ ( ( BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#30
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#30
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_CAT_O , BOOST_PP_LIST_FIRST_I BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1
#30
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#30
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_REVERSE_O , BOOST_PP_NIL , ( 4 , ( 1 , (
#30
5 , ( 2 , BOOST_PP_NIL ) ) ) ) ) , BOOST_PP_LIST_REST_I BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64
#30
, BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#30
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_REVERSE_O , BOOST_PP_NIL , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL
#30
) ) ) ) ) ) == 2514 ) == 1 ) ? 1 : - 1 ] ;

typedef int test_32 [ ( ( BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#32
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#32
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_CAT_O , BOOST_PP_LIST_FIRST_I BOOST_PP_TUPLE_ELEM_2_0 BOOST_PP_WHILE_BOOST_PP_IIF_BOOST_PP_BITAND_1
#32
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#32
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_REST_N_P , BOOST_PP_LIST_REST_N_O , ( (
#32
4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) , 2 ) ) , BOOST_PP_LIST_REST_I BOOST_PP_TUPLE_ELEM_2_0 BOOST_PP_WHILE_BOOST_PP_IIF_BOOST_PP_BITAND_1
#32
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#32
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_REST_N_P , BOOST_PP_LIST_REST_N_O , ( (
#32
4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) , 2 ) ) ) == 52 ) == 1 ) ? 1 : - 1 ] ;
typedef int test_33 [ ( ( BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#33
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#33
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_CAT_O , BOOST_PP_LIST_FIRST_I BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1
#33
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#33
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_REVERSE_O , BOOST_PP_NIL , BOOST_PP_TUPLE_ELEM_3_2
#33
BOOST_PP_WHILE_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#33
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_FIRST_N_P
#33
, BOOST_PP_LIST_FIRST_N_O , ( 2 , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) , BOOST_PP_NIL ) ) ) , BOOST_PP_LIST_REST_I
#33
BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) (
#33
BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#33
) ( BOOST_PP_LIST_REVERSE_O , BOOST_PP_NIL , BOOST_PP_TUPLE_ELEM_3_2 BOOST_PP_WHILE_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64
#33
, BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#33
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_FIRST_N_P , BOOST_PP_LIST_FIRST_N_O , ( 2 , ( 4 , ( 1 , ( 5 ,
#33
( 2 , BOOST_PP_NIL ) ) ) ) , BOOST_PP_NIL ) ) ) ) == 41 ) == 1 ) ? 1 : - 1 ] ;

typedef int test_35 [ ( ( BOOST_PP_LIST_FIRST_I BOOST_PP_TUPLE_ELEM_2_0 BOOST_PP_WHILE_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 (
#35
BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#35
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_REST_N_P , BOOST_PP_LIST_REST_N_O , ( (
#35
4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) , 2 ) ) == 5 ) == 1 ) ? 1 : - 1 ] ;
typedef int test_36 [ ( ( BOOST_PP_TUPLE_ELEM_2_0 BOOST_PP_WHILE_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#36
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#36
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_SIZE_P , BOOST_PP_LIST_SIZE_O , ( 0 , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) )
#36
) ) == 4 ) == 1 ) ? 1 : - 1 ] ;

typedef int test_38 [ ( ( BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#38
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#38
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_CAT_O , BOOST_PP_LIST_FIRST_I BOOST_PP_TUPLE_ELEM_3_2 BOOST_PP_LIST_FOLD_RIGHT_BOOST_PP_IIF_BOOST_PP_BITAND_1
#38
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#38
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_TRANSFORM_O , ( BOOST_PP_ADD_D , 2 , BOOST_PP_NIL
#38
) , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) ) , BOOST_PP_LIST_REST_I BOOST_PP_TUPLE_ELEM_3_2 BOOST_PP_LIST_FOLD_RIGHT_BOOST_PP_IIF_BOOST_PP_BITAND_1
#38
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#38
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_TRANSFORM_O , ( BOOST_PP_ADD_D , 2 , BOOST_PP_NIL
#38
) , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) ) ) == 6374 ) == 1 ) ? 1 : - 1 ] ;
typedef int test_39 [ ( ( BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#39
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#39
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_CAT_O , BOOST_PP_LIST_FIRST_I BOOST_PP_LIST_FOLD_RIGHT_BOOST_PP_IIF_BOOST_PP_BITAND_1
#39
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#39
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_APPEND_O , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL
#39
) ) ) ) , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) , BOOST_PP_LIST_REST_I BOOST_PP_LIST_FOLD_RIGHT_BOOST_PP_IIF_BOOST_PP_BITAND_1
#39
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#39
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_APPEND_O , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL
#39
) ) ) ) , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) ) == 1524152 ) == 1 ) ? 1 : - 1 ] ;

typedef int test_42 [ ( ( + 4 + 1 + 1 + 1 + 5 + 1 + 2 + 1 == 16 ) == 1 ) ? 1 : - 1 ] ;

typedef int test_44 [ ( ( 2 == 2 ) == 1 ) ? 1 : - 1 ] ;

typedef int test_46 [ ( ( BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#46
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#46
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_CAT_O , BOOST_PP_LIST_FIRST_I BOOST_PP_TUPLE_ELEM_3_2 BOOST_PP_LIST_FOLD_RIGHT_BOOST_PP_IIF_BOOST_PP_BITAND_1
#46
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#46
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_FILTER_O , ( BOOST_PP_LESS_D , 3 , BOOST_PP_NIL
#46
) , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) ) , BOOST_PP_LIST_REST_I BOOST_PP_TUPLE_ELEM_3_2 BOOST_PP_LIST_FOLD_RIGHT_BOOST_PP_IIF_BOOST_PP_BITAND_1
#46
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#46
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_FILTER_O , ( BOOST_PP_LESS_D , 3 , BOOST_PP_NIL
#46
) , ( 4 , ( 1 , ( 5 , ( 2 , BOOST_PP_NIL ) ) ) ) ) ) == 45 ) == 1 ) ? 1 : - 1 ] ;

typedef int test_49 [ ( ( + 1 + 2 - 2 + 1 + 2 - 3 + 0 + 2 - 2 + 0 + 2 - 3 == 0 ) == 1 ) ? 1 : - 1 ] ;
#57
typedef int test_57 [ ( ( BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#57
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#57
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_CAT_O , BOOST_PP_LIST_FIRST_I BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1
#57
1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192 ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#57
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_APPEND_D , BOOST_PP_NIL , ( ( 0 , ( x ,
#57
BOOST_PP_NIL ) ) , ( ( a , ( 1 , ( b , ( 2 , BOOST_PP_NIL ) ) ) ) , ( ( c , ( 3 , ( d , BOOST_PP_NIL ) ) ) , BOOST_PP_NIL
#57
) ) ) ) , BOOST_PP_LIST_REST_I BOOST_PP_LIST_FOLD_LEFT_BOOST_PP_IIF_BOOST_PP_BITAND_1 1 ( BOOST_PP_NODE_64 , BOOST_PP_NODE_192
#57
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P ) ( BOOST_PP_WHILE_P
#57
) ( BOOST_PP_WHILE_P ) ( BOOST_PP_LIST_APPEND_D , BOOST_PP_NIL , ( ( 0 , ( x , BOOST_PP_NIL ) ) , ( ( a , ( 1 , ( b , ( 2
#57
, BOOST_PP_NIL ) ) ) ) , ( ( c , ( 3 , ( d , BOOST_PP_NIL ) ) ) , BOOST_PP_NIL ) ) ) ) ) == 0x0a1b2c3d ) == 1 ) ? 1 : - 1
#57
] ;


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk