$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
Subject: [boost] [test] How to have a simple unit test compile on Borland/CodeGear?
From: Niels Dekker - address until 2010-10-10 (niels_address_until_2010-10-10_at_[hidden])
Date: 2010-04-05 11:31:59
Is the following still a proper way to write a unit test for a Boost 
library component?
   #define BOOST_INCLUDE_MAIN
   #include <boost/test/test_tools.hpp>
   int test_main(int, char*[])
   {
     // TODO Some testing here...
     return 0;
   }
I can't get the above code compiling on the latest Borland/CodeGear 
compiler (Embarcadero C++ 6.21), installed by 
c++builder_2010_3615_win_esd.zip, downloaded from 
www.embarcadero.com/downloads Even though I already patched 
boost/smart_ptr (ticket #4067) and boost/exception (ticket #4068).
I just do:
   bjam toolset=borland
Which tries to compile 
<boost/test/utils/runtime/cla/dual_name_parameter.hpp> apparently, and 
it yields an error at line 43:
     template<typename Modifier>
     void    accept_modifier( Modifier const& m )
     {
         if( m.has( prefix ) ) {
             set_prefix( m[prefix] ); // line 43, "Error E2094"!
             ...
The complete error message is down here. Interestingly, the message says 
that operator+ is missing (while I don't see a need for operator+ in 
this context). Any help is appreciated!
Kind regards,
     Niels
------------------------------------------------------------
CodeGear/Embarcadero C++ 6.21 output:
Error E2094 
..\..\..\..\boost/test/utils/runtime/cla/dual_name_parameter.hpp 43: 
'operator+' not implemented in type 
'nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<const 
unit_test::const_string,description_t,const unit_test::const_string 
&>,nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<bool,optional_t,bool>,nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<bool,guess_name_t,bool>,nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<const 
unit_test::const_string,separator_t,const unit_test::const_string 
&>,nfp::named_parameter<const unit_test::const_string,prefix_t,const 
unit_test::const_string &> > > > >' for arguments of type 
'nfp::typed_keyword<unit_test::const_string,prefix_t,0>' in function 
void 
dual_name_policy::accept_modifier<nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<const 
unit_test::const_string,description_t,const unit_test::const_string 
&>,nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<bool,optional_t,bool>,nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<bool,guess_name_t,bool>,nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<const 
unit_test::const_string,separator_t,const unit_test::const_string 
&>,nfp::named_parameter<const unit_test::const_string,prefix_t,const 
unit_test::const_string &> > > > > >(const 
nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<const 
unit_test::const_string,description_t,const unit_test::const_string 
&>,nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<bool,optional_t,bool>,nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<bool,guess_name_t,bool>,nfp::nfp_detail::named_parameter_combine<nfp::named_parameter<const 
unit_test::const_string,separator_t,const unit_test::const_string 
&>,nfp::named_parameter<const unit_test::const_string,prefix_t,const 
unit_test::const_string &> > > > > &)