[test] and bcc32 errors

Running the regression tests on boost.test with bcc32 leads to many errors like this (and also in other libs regression tests) basic_cstring_test.cpp: Error E2093 c:\Users\russell\Projects\boost-cvs\boost\boost/test/predicate_result.hpp 51: 'operator!' not implemented in type 'tt_detail::equal_impl_frwd' for arguments of the same type in function predicate_result::predicate_result(const tt_detail::equal_impl_frwd &) Any ideas what is going on? Thanks Russell

Running the regression tests on boost.test with bcc32 leads to many errors like this (and also in other libs regression tests)
basic_cstring_test.cpp: Error E2093 c:\Users\russell\Projects\boost-cvs\boost\boost/test/predicate_result.hpp 51: 'operator!' not implemented in type 'tt_detail::equal_impl_frwd' for arguments of the same type in function predicate_result::predicate_result(const tt_detail::equal_impl_frwd &)
Any ideas what is going on?
I think I know how to fix this. I just need to spend some time playing with this compiler. Gennadiy

Gennadiy Rozental wrote:
I think I know how to fix this. I just need to spend some time playing with this compiler.
I can run tests if you have any suggestions, but I don't have enough of an understanding of the library to be able to actually help fix it. But I can try things out if that would help. Cheers Russell

Gennadiy Rozental wrote:
I think I know how to fix this. I just need to spend some time playing with this compiler.
Hi Gennadiy, Looks like this errors have gone now. The only errors I'm getting now are pasted below. The print_helper_t<char[4]> errors may be related to errors Eric Niebler solved in BOOST_FOREACH when dealing with conversions of char arrays and Borland. Perhaps he can help with these? Thanks Russell borland-C++-action ..\..\..\bin\boost\libs\test\test\config_file_test.test\borland\debug\config_file_test.obj config_file_test.cpp: Error E2507 c:\Users\russell\Projects\boost-cvs\boost\boost/test/utils/named_params.hpp 130: 'Rest::has' is not a direct base class of 'named_parameter_combine<NP,Rest>' Error E2451 config_file_test.cpp 30: Undefined symbol 'ex' in function basic_load_test() Error E2285 config_file_test.cpp 31: Could not find a match for 'boost::unit_test::ut_detail::ignore_unused_variable_warning<T>(undefined)' in function basic_load_test() Error E2285 config_file_test.cpp 32: Could not find a match for 'boost::unit_test::ut_detail::ignore_unused_variable_warning<T>(undefined)' in function basic_load_test() Assertion failed c:\Users\russell\Projects\boost-cvs\boost\boost/test/utils/named_params.hpp(132) : type->t.td.tdEnclType->tpTopType == T_TMPLDEP at d:\helena\bcc\indep\template.c(8242) "bcc32" -j5 -g255 -q -c -P -w -Ve -Vx -a8 -b- -v -Od -vi- -tWC -tWR -tWC -WM- -w-8001 -I"c:\Users\russell\Projects\boost-cvs\boost" -o"..\..\..\bin\boost\libs\test\test\config_file_test.test\borland\debug\config_file_test.obj" "config_file_test.cpp" ...failed borland-C++-action ..\..\..\bin\boost\libs\test\test\config_file_test.test\borland\debug\config_file_test.obj... borland-C++-action ..\..\..\bin\boost\libs\test\test\config_file_iterator_test.test\borland\debug\config_file_iterator_test.obj config_file_iterator_test.cpp: Error E2507 c:\Users\russell\Projects\boost-cvs\boost\boost/test/utils/named_params.hpp 130: 'Rest::has' is not a direct base class of 'named_parameter_combine<NP,Rest>' Assertion failed c:\Users\russell\Projects\boost-cvs\boost\boost/test/utils/runtime/env/variable.hpp(103) : type->tpTopType == T_TMPLDEP at d:\helena\bcc\indep\template.c(8241) "bcc32" -j5 -g255 -q -c -P -w -Ve -Vx -a8 -b- -v -Od -vi- -tWC -tWR -tWC -WM- -w-8001 -I"c:\Users\russell\Projects\boost-cvs\boost" -o"..\..\..\bin\boost\libs\test\test\config_file_iterator_test.test\borland\debug\config_file_iterator_test.obj" "config_file_iterator_test.cpp" ...failed borland-C++-action ..\..\..\bin\boost\libs\test\test\config_file_iterator_test.test\borland\debug\config_file_iterator_test.obj... borland-C++-action ..\..\..\bin\boost\libs\test\test\boost_check_equal_str.test\borland\debug\boost_check_equal_str.obj boost_check_equal_str.cpp: Error E2285 c:\Users\russell\Projects\boost-cvs\boost\boost/test/test_tools.hpp 339: Could not find a match for 'print_helper_t<char[4]>::print_helper_t(const char *)' in function print_helper_t<char[4]> print_helper<char[4]>(char ( &) const[4]) Error E2031 c:\Users\russell\Projects\boost-cvs\boost\boost/test/test_tools.hpp 339: Cannot cast from 'const char *' to 'print_helper_t<char[4]>' in function print_helper_t<char[4]> print_helper<char[4]>(char ( &) const[4]) *** 2 errors in Compile ***

Russell Hind wrote:
Looks like this errors have gone now. The only errors I'm getting now are pasted below. The print_helper_t<char[4]> errors may be related to errors Eric Niebler solved in BOOST_FOREACH when dealing with conversions of char arrays and Borland. Perhaps he can help with these?
This shows the problem with Borland and arrays. The following code outputs char[5] const char* I'm not sure how you get around this, though. Cheers Russell #include <iostream> #include <typeinfo> template <typename T> void print_helper_t(T const & t) { std::cout << typeid(T).name() << std::endl << typeid(t).name() << std::endl; } int main(int argc, char* argv[]) { char Hello[5] = {'H','e','l','l','o'}; print_helper_t(Hello); return 0; }

c:\Users\russell\Projects\boost-cvs\boost\boost/test/utils/named_params.hpp 130: 'Rest::has' is not a direct base class of 'named_parameter_combine<NP,Rest>'
This one is most difficult to fix. It caused by inability of Borland to deal with "in class" using declaration. Until it's resolved no sense to try fix anything else. Any help is appreciated. Gennadiy

Gennadiy Rozental wrote:
This one is most difficult to fix. It caused by inability of Borland to deal with "in class" using declaration. Until it's resolved no sense to try fix anything else. Any help is appreciated.
What is 'has'? Rest defaults to 'nil' which doesn't have a member 'has' anyway. I've been looking at ptr_container, and this has suffered problems with 'using' declarations. But only for functions, so I've duplicated the function in the derived class to just call the base class and this has worked (in the places I've tested) so could this not be done here? Cheers Russell

"Russell Hind" <rh_gmane@mac.com> wrote in message news:d5tbph$onv$1@sea.gmane.org...
Gennadiy Rozental wrote:
This one is most difficult to fix. It caused by inability of Borland to deal with "in class" using declaration. Until it's resolved no sense to try fix anything else. Any help is appreciated.
What is 'has'? Rest defaults to 'nil' which doesn't have a member 'has' anyway.
struct nil{}; template<T, Rest=nil> class A : public Rest { public: void foo( T ); using Rest::foo; }; Let say we have instantiation A<int,A<float,A<char> > >. Without using, void foo( int ) will hide all other overloads. I could add foo to nil. But I do not think it's an issue here. Gennadiy

Gennadiy Rozental wrote:
struct nil{};
template<T, Rest=nil> class A : public Rest { public: void foo( T ); using Rest::foo; };
Let say we have instantiation A<int,A<float,A<char> > >. Without using, void foo( int ) will hide all other overloads. I could add foo to nil. But I do not think it's an issue here.
Gennadiy
Ok, I can now see what the problem is. I certainly haven't got any ideas about how to solve this. Russell
participants (2)
-
Gennadiy Rozental
-
Russell Hind