Boost regression testsuite results for the improved new checkingcode

Peter Schmid schmid@snake.iap.physik.tu-darmstadt.de
Mon Apr 16 09:32:00 GMT 2001


Thank you very much for your reply. 
There are two statements of yours, I do not comprehend.

libs/integer/integer_traits_test.cpp 
crashes with an ice in ../boost/integer_traits.hpp:137: Internal
compiler error in tree_low_cst, at tree.c:3440, regardless if checking
is on or off, like libs/random/random_test.cpp and libs/random/random_demo.cpp.

It surprises me that the old checking code accepts
libs/regex/demo/regress/regex_test.cpp and libs/utility/call_traits_test.cpp.

|libs/utility/call_traits_test.cpp
|References to references are currently not valid.  I think Stroustrup has
|a defect report in on this.

I do not understand this statement. IMHO this has something to do with
the const qualifier in the typedef const r_type cr_type in line 18 of
call_traits_test.cpp. If this qualifier is removed, I tentatively
replaced this typedef with typedef r_type cr_type, the code
compiles. The program runs successfully. 

According to the call_traits documentation and a comment in the source
code, this const qualifier should have no effect. Therefore, I believe
that this is a g++ defect. 

(results after removing the const qualifier)
g++ -o boosttmp.exe -Wall -W -ftemplate-depth-30 -I.. ../libs/utility/call_traits_test.cpp
../libs/utility/call_traits_test.cpp: In function `int main(int, char**)':
../libs/utility/call_traits_test.cpp:211: warning: unused variable `const char 
   ca[4]'
../libs/utility/call_traits_test.cpp: In function `static void 
   call_traits_test<T, isarray>::assert_construct(typename 
   boost::call_traits<T>::param_type) [with T = int, bool isarray = false]':
../libs/utility/call_traits_test.cpp:356:   instantiated from here
../libs/utility/call_traits_test.cpp:304: warning: unused variable `int v2'
../libs/utility/call_traits_test.cpp:305: warning: unused variable `int v3'
../libs/utility/call_traits_test.cpp:306: warning: unused variable `int v4'
../libs/utility/call_traits_test.cpp:307: warning: unused variable `int&r2'
../libs/utility/call_traits_test.cpp:308: warning: unused variable `int&r3'
../libs/utility/call_traits_test.cpp:309: warning: unused variable `const 
   int&cr2'
../libs/utility/call_traits_test.cpp:310: warning: unused variable `const 
   int&cr3'
../libs/utility/call_traits_test.cpp:311: warning: unused variable `const 
   int&cr4'
../libs/utility/call_traits_test.cpp:312: warning: unused variable `const 
   int&cr5'
../libs/utility/call_traits_test.cpp:313: warning: unused variable `const int 
   p2'
../libs/utility/call_traits_test.cpp:314: warning: unused variable `const int 
   p3'
../libs/utility/call_traits_test.cpp:315: warning: unused variable `const int 
   p4'
../libs/utility/call_traits_test.cpp: In function `static void 
   call_traits_test<T, isarray>::assert_construct(typename 
   boost::call_traits<T>::param_type) [with T = const int, bool isarray = 
   false]':
../libs/utility/call_traits_test.cpp:357:   instantiated from here
../libs/utility/call_traits_test.cpp:304: warning: unused variable `const int 
   v2'
../libs/utility/call_traits_test.cpp:305: warning: unused variable `const int 
   v3'
../libs/utility/call_traits_test.cpp:306: warning: unused variable `const int 
   v4'
../libs/utility/call_traits_test.cpp:307: warning: unused variable `const 
   int&r2'
../libs/utility/call_traits_test.cpp:308: warning: unused variable `const 
   int&r3'
../libs/utility/call_traits_test.cpp:309: warning: unused variable `const 
   int&cr2'
../libs/utility/call_traits_test.cpp:310: warning: unused variable `const 
   int&cr3'
../libs/utility/call_traits_test.cpp:311: warning: unused variable `const 
   int&cr4'
../libs/utility/call_traits_test.cpp:312: warning: unused variable `const 
   int&cr5'
../libs/utility/call_traits_test.cpp:313: warning: unused variable `const int 
   p2'
../libs/utility/call_traits_test.cpp:314: warning: unused variable `const int 
   p3'
../libs/utility/call_traits_test.cpp:315: warning: unused variable `const int 
   p4'
../libs/utility/call_traits_test.cpp: In function `static void 
   call_traits_test<T, isarray>::assert_construct(typename 
   boost::call_traits<T>::param_type) [with T = int*, bool isarray = false]':
../libs/utility/call_traits_test.cpp:358:   instantiated from here
../libs/utility/call_traits_test.cpp:304: warning: unused variable `int*v2'
../libs/utility/call_traits_test.cpp:305: warning: unused variable `int*v3'
../libs/utility/call_traits_test.cpp:306: warning: unused variable `int*v4'
../libs/utility/call_traits_test.cpp:307: warning: unused variable `int*&r2'
../libs/utility/call_traits_test.cpp:308: warning: unused variable `int*&r3'
../libs/utility/call_traits_test.cpp:309: warning: unused variable `int* 
   const&cr2'
../libs/utility/call_traits_test.cpp:310: warning: unused variable `int* 
   const&cr3'
../libs/utility/call_traits_test.cpp:311: warning: unused variable `int* 
   const&cr4'
../libs/utility/call_traits_test.cpp:312: warning: unused variable `int* 
   const&cr5'
../libs/utility/call_traits_test.cpp:313: warning: unused variable `int* const 
   p2'
../libs/utility/call_traits_test.cpp:314: warning: unused variable `int* const 
   p3'
../libs/utility/call_traits_test.cpp:315: warning: unused variable `int* const 
   p4'
../libs/utility/call_traits_test.cpp: In function `static void 
   call_traits_test<T, isarray>::assert_construct(typename 
   boost::call_traits<T>::param_type) [with T = int&, bool isarray = false]':
../libs/utility/call_traits_test.cpp:360:   instantiated from here
../libs/utility/call_traits_test.cpp:304: warning: unused variable `int&v2'
../libs/utility/call_traits_test.cpp:305: warning: unused variable `int&v3'
../libs/utility/call_traits_test.cpp:306: warning: unused variable `int&v4'
../libs/utility/call_traits_test.cpp:307: warning: unused variable `int&r2'
../libs/utility/call_traits_test.cpp:308: warning: unused variable `int&r3'
../libs/utility/call_traits_test.cpp:309: warning: unused variable `const 
   int&cr2'
../libs/utility/call_traits_test.cpp:310: warning: unused variable `const 
   int&cr3'
../libs/utility/call_traits_test.cpp:311: warning: unused variable `const 
   int&cr4'
../libs/utility/call_traits_test.cpp:312: warning: unused variable `const 
   int&cr5'
../libs/utility/call_traits_test.cpp:313: warning: unused variable `int&p2'
../libs/utility/call_traits_test.cpp:314: warning: unused variable `int&p3'
../libs/utility/call_traits_test.cpp:315: warning: unused variable `int&p4'
../libs/utility/call_traits_test.cpp: In function `static void 
   call_traits_test<T, isarray>::assert_construct(typename 
   boost::call_traits<T>::param_type) [with T = const int&, bool isarray = 
   false]':
../libs/utility/call_traits_test.cpp:361:   instantiated from here
../libs/utility/call_traits_test.cpp:304: warning: unused variable `const 
   int&v2'
../libs/utility/call_traits_test.cpp:305: warning: unused variable `const 
   int&v3'
../libs/utility/call_traits_test.cpp:306: warning: unused variable `const 
   int&v4'
../libs/utility/call_traits_test.cpp:307: warning: unused variable `const 
   int&r2'
../libs/utility/call_traits_test.cpp:308: warning: unused variable `const 
   int&r3'
../libs/utility/call_traits_test.cpp:309: warning: unused variable `const 
   int&cr2'
../libs/utility/call_traits_test.cpp:310: warning: unused variable `const 
   int&cr3'
../libs/utility/call_traits_test.cpp:311: warning: unused variable `const 
   int&cr4'
../libs/utility/call_traits_test.cpp:312: warning: unused variable `const 
   int&cr5'
../libs/utility/call_traits_test.cpp:313: warning: unused variable `const 
   int&p2'
../libs/utility/call_traits_test.cpp:314: warning: unused variable `const 
   int&p3'
../libs/utility/call_traits_test.cpp:315: warning: unused variable `const 
   int&p4'
../libs/utility/call_traits_test.cpp: In function `static void 
   call_traits_test<T, true>::assert_construct(typename 
   boost::call_traits<T>::param_type) [with T = int[2]]':
../libs/utility/call_traits_test.cpp:363:   instantiated from here
../libs/utility/call_traits_test.cpp:336: warning: unused variable `const 
   int*v5'
../libs/utility/call_traits_test.cpp:339: warning: unused variable `int 
   (&r2)[2]'
../libs/utility/call_traits_test.cpp:342: warning: unused variable `const int 
   (&cr2)[2]'
../libs/utility/call_traits_test.cpp:345: warning: unused variable `const 
   int*v2'
../libs/utility/call_traits_test.cpp:346: warning: unused variable `const int 
   (&cr3)[2]'
../libs/utility/call_traits_test.cpp:347: warning: unused variable `const 
   int*v3'
../libs/utility/call_traits_test.cpp:348: warning: unused variable `const 
   int*v4'
../libs/utility/call_traits_test.cpp:349: warning: unused variable `const int* 
   const p2'
../libs/utility/call_traits_test.cpp:350: warning: unused variable `const int* 
   const p3'
../libs/utility/call_traits_test.cpp:351: warning: unused variable `const int* 
   const p4'

./boosttmp.exe 
checking contained<14comparible_UDT>...
typeof contained<14comparible_UDT>::value() is:      M9containedI14comparible_UDTEFS0_vE
typeof contained<14comparible_UDT>::get() is:        M9containedI14comparible_UDTEFRS0_vE
typeof contained<14comparible_UDT>::const_get() is:  M9containedI14comparible_UDTEFRKS0_vE
typeof contained<14comparible_UDT>::call() is:       M9containedI14comparible_UDTEFvRKS0_E

checking contained<i>...
typeof contained<i>::value() is:      M9containedIiEFivE
typeof contained<i>::get() is:        M9containedIiEFRivE
typeof contained<i>::const_get() is:  M9containedIiEFRKivE
typeof contained<i>::call() is:       M9containedIiEFviE

checking contained<Pi>...
typeof contained<Pi>::value() is:      M9containedIPiEFS0_vE
typeof contained<Pi>::get() is:        M9containedIPiEFRS0_vE
typeof contained<Pi>::const_get() is:  M9containedIPiEFRKS0_vE
typeof contained<Pi>::call() is:       M9containedIPiEFvS0_E

checking contained<i>...
typeof contained<i>::value() is:      M9containedIRiEFS0_vE
typeof contained<i>::get() is:        M9containedIRiEFS0_vE
typeof contained<i>::const_get() is:  M9containedIRiEFRKivE
typeof contained<i>::call() is:       M9containedIRiEFvS0_E

checking contained<i>...
typeof contained<i>::value() is:      M9containedIRKiEFS1_vE
typeof contained<i>::get() is:        M9containedIRKiEFS1_vE
typeof contained<i>::const_get() is:  M9containedIRKiEFS1_vE
typeof contained<i>::call() is:       M9containedIRKiEFvS1_E

checking contained<A2_i>...
typeof contained<A2_i>::v_ is:         M9containedIA2_iES0_
typeof contained<A2_i>::value is:      M9containedIA2_iEFPKivE
typeof contained<A2_i>::get is:        M9containedIA2_iEFRS0_vE
typeof contained<A2_i>::const_get is:  M9containedIA2_iEFRKS0_vE
typeof contained<A2_i>::call is:       M9containedIA2_iEFvPKiE

checking contained<i>...
checking contained<PKi>...
checking std::pair<PKi, PKi>...

32 tests completed, 0 failures found, 4 failures expected from this compiler.

|libs/utility/counting_iterator_test.cpp - +
|This fails with checking on because of the SignedIntegerConcept check on
|their homegrown 'intmax_t', same as above.

I am not sure, if I understand your statement. I thought the concept
checks reject this code because some operators are not defined.

../libs/utility/counting_iterator_test.cpp:248:   instantiated from
here
/usr/local/include/g++-v3/bits/boost_concept_check.h:499: no match for 
   `my_int3& + ptrdiff_t&' operator
/usr/local/include/g++-v3/bits/boost_concept_check.h:499: no match for 
   `ptrdiff_t& + my_int3&' operator
/usr/local/include/g++-v3/bits/boost_concept_check.h:500: no match for 
   `my_int3& -= ptrdiff_t&' operator
/usr/local/include/g++-v3/bits/boost_concept_check.h:504: no match for 
   `my_int3& [ptrdiff_t&]' operator
../libs/utility/counting_iterator_test.cpp:248:   instantiated from here
/usr/local/include/g++-v3/bits/boost_concept_check.h:230: no match for 
   `my_int3& > my_int3&' operator
/usr/local/include/g++-v3/bits/boost_concept_check.h:231: no match for 
   `my_int3& <= my_int3&' operator
/usr/local/include/g++-v3/bits/boost_concept_check.h:232: no match for 
   `my_int3& >= my_int3&' operator
../libs/utility/counting_iterator_test.cpp:248:   instantiated from here
/usr/local/include/g++-v3/bits/boost_concept_check.h:445: instantiation of 
   `__r' as type void
/usr/local/include/g++-v3/bits/boost_concept_check.h:445: no match for `* 
   my_int3&' operator

Hope this helps,
Peter Schmid




More information about the Libstdc++ mailing list