Boost logo

Boost :

From: rogeeff (rogeeff_at_[hidden])
Date: 2001-12-23 10:33:39


--- In boost_at_y..., John Maddock <John_Maddock_at_c...> wrote:

[...]
> to my surprise neither does [compile] gcc! In fact gcc generates
quite a few
> warnings and errors - all of which look like they really do need
fixing,

[...]

>
> And here is the gcc output:
>

[...]

>
> g++ -c -Wall -ftemplate-depth-100 -g -O0 -fno-inline
> -I"..\..\..\libs\test\build" -I"d:\boost\btl" -o
> "..\..\..\libs\test\build\bin\libboost_test.lib\gcc\debug\runtime-
link-dyna
> mic\execution_monitor.obj"
> "..\..\..\libs\test\build\../src\execution_monitor.cpp"
>
> gcc-C++-action
> ..\..\..\libs\test\build\bin\libboost_test.lib\gcc\debug\runtime-
link-dynam
> ic\test_tools.obj
>
> g++ -c -Wall -ftemplate-depth-100 -g -O0 -fno-inline
> -I"..\..\..\libs\test\build" -I"d:\boost\btl" -o
> "..\..\..\libs\test\build\bin\libboost_test.lib\gcc\debug\runtime-
link-
dynamic\test_tools.obj" "..\..\..\libs\test\build\../src\test_tools.c
pp"
>
> In file included
from ..\..\..\libs\test\build\../src\test_tools.cpp:10:
> d:/boost/btl/boost/test/test_tools.hpp: In function `bool
> boost::test_toolbox::detail::compare_and_continue_impl(FPT, FPT,
> ToleranceSource, const boost::test_toolbox::detail::wrapstrstream
&, const
> char *, int, boost::unit_test_framework::report_level =
> boost::unit_test_framework::report_all_errors)':
> d:/boost/btl/boost/test/test_tools.hpp:289: parse error before `>'

gcc for some reasons trying to instantiate template function
template<typename FPT, typename ToleranceSource>
compare_and_continue_impl(...)

that is not used in test_tools.cpp. Is there compiler option to
prevent it from doing this? An Alternative would be to include
<details/floating_point_comparison.hpp>

> ..\..\..\libs\test\build\../src\test_tools.cpp: In method `void
> boost::test_toolbox::output_test_stream::flush()':
> ..\..\..\libs\test\build\../src\test_tools.cpp:222: `::ios_base'
undeclared
> (first use here)
> ..\..\..\libs\test\build\../src\test_tools.cpp:222: parse error
before `::'
> ..\..\..\libs\test\build\../src\test_tools.cpp: In method
> `boost::test_toolbox::output_test_stream::output_test_stream(const
char * =
> 0, bool = true)':
> ..\..\..\libs\test\build\../src\test_tools.cpp:238: parse error
before `::'
> ..\..\..\libs\test\build\../src\test_tools.cpp:238: parse error
before `::'

lack of comporming iostreams. What is a gcc alternative for this?

[...]

> d:/boost/btl/boost/test/detail/unit_test_monitor.hpp: In method
>
`boost::unit_test_framework::detail::unit_test_monitor::unit_test_moni
tor(boost::unit_test_framework::test_case &, void
> (boost::unit_test_framework::test_case::*)())':
> d:/boost/btl/boost/test/detail/unit_test_monitor.hpp:54: warning:
member
> initializers for `void (boost::unit_test_framework::test_case::*
>
boost::unit_test_framework::detail::unit_test_monitor::m_test_case_fun
ction
> )()'
> d:/boost/btl/boost/test/detail/unit_test_monitor.hpp:55: warning:
and
> `class boost::unit_test_framework::test_case &
> boost::unit_test_framework::detail::unit_test_monitor::m_test_case'
> d:/boost/btl/boost/test/detail/unit_test_monitor.hpp:44: warning:
will be
> re-ordered to match declaration order

OK. Fixed.

[...]

> gcc-C++-action
> ..\..\..\libs\test\test\bin\unit_test_suite_ex_test\gcc\debug\runtim
e-link-
> dynamic\unit_test_suite_ex_test.obj
>
> g++ -c -Wall -ftemplate-depth-100 -g -O0 -fno-inline
> -I"..\..\..\libs\test\test" -I"." -I"..\..\.." -o
> "..\..\..\libs\test\test\bin\unit_test_suite_ex_test\gcc\debug\runti
me-link
> -
dynamic\unit_test_suite_ex_test.obj" "unit_test_suite_ex_test.cpp"
>
> In file included from ../../../boost/test/unit_test_suite.hpp:13,
> from ../../../boost/test/unit_test_suite_ex.hpp:13,
> from unit_test_suite_ex_test.cpp:12:
> ../../../boost/test/detail/unit_test_monitor.hpp: In method
>
> ../../../boost/bind.hpp: In method `void
> boost::_bi::list2<boost::_bi::arg<2>,boost::_bi::value<int>
>::operator
> ()<void, void (*)(int, int), boost::_bi::list1<int &>
> >(boost::_bi::type<void>, void (*)(int, int), boost::_bi::list1<int
&> &)
> const':
> ../../../boost/bind/bind_template.hpp:33: instantiated from
> `boost::_bi::bind_t<void,void (*)(int,
> int),boost::_bi::list2<boost::_bi::arg<2>,boost::_bi::value<int> >
> >::operator ()<int>(int &)'
> ../../../boost/function/function_template.hpp:122: instantiated
from
>
`boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_
t<voi
> d,void (*)(int,
> int),boost::_bi::list2<boost::_bi::arg<2>,boost::_bi::value<int> >
> >,void,int>::invoke(boost::detail::function::any_pointer, int)'
> ../../../boost/function/function_template.hpp:361: instantiated
from
>
`boost::function1<void,int,boost::empty_function_policy,boost::empty_f
uncti
> on_mixin,allocator<boost::function_base>
> >::assign_to<boost::_bi::bind_t<void,void (*)(int,
> int),boost::_bi::list2<boost::_bi::arg<2>,boost::_bi::value<int> > >
> >(boost::_bi::bind_t<void,void (*)(int,
> int),boost::_bi::list2<boost::_bi::arg<2>,boost::_bi::value<int> >
>,
> boost::detail::function::function_obj_tag)'
> ../../../boost/function/function_template.hpp:313: instantiated
from
>
`boost::function1<void,int,boost::empty_function_policy,boost::empty_f
uncti
> on_mixin,allocator<boost::function_base>
> >::assign_to<boost::_bi::bind_t<void,void (*)(int,
> int),boost::_bi::list2<boost::_bi::arg<2>,boost::_bi::value<int> > >
> >(boost::_bi::bind_t<void,void (*)(int,
> int),boost::_bi::list2<boost::_bi::arg<2>,boost::_bi::value<int> >
>)'
> ../../../boost/function/function_template.hpp:209: instantiated
from
>
`boost::function1<void,int,boost::empty_function_policy,boost::empty_f
uncti
> on_mixin,allocator<boost::function_base>
> >::function1<boost::_bi::bind_t<void,void (*)(int,
> int),boost::_bi::list2<boost::_bi::arg<2>,boost::_bi::value<int> > >
> >(boost::_bi::bind_t<void,void (*)(int,
> int),boost::_bi::list2<boost::_bi::arg<2>,boost::_bi::value<int> >
>)'
> unit_test_suite_ex_test.cpp:58: instantiated from here
> ../../../boost/bind.hpp:212: no match for `boost::_bi::list1<int &>
&[const
> boost::_bi::arg<2> &]'
> ../../../boost/bind.hpp:149: candidates are: int &
boost::_bi::list1<int
> &>::operator [](boost::_bi::arg<1>) const
> ../../../boost/bind.hpp: At top level:
> ../../../boost/bind.hpp: In instantiation of
> `boost::_bi::result_traits<boost::_bi::unspecified,void (*)(int,
int)>':
> ../../../boost/bind/bind_template.hpp:16: instantiated from
> `boost::_bi::bind_t<boost::_bi::unspecified,void (*)(int,
>
int),boost::_bi::list4<boost::_bi::arg<1>,boost::_bi::value<int>,boost
::_bi
> ::arg<2>,boost::_bi::value<int> > >'
> unit_test_suite_ex_test.cpp:80: instantiated from here
> ../../../boost/bind.hpp:53: `void (*)(int, int)' is not a class,
struct, or
> union type
> ../../../boost/bind/bind_template.hpp: In instantiation of
> `boost::_bi::bind_t<boost::_bi::unspecified,void (*)(int,
>
int),boost::_bi::list4<boost::_bi::arg<1>,boost::_bi::value<int>,boost
::_bi
> ::arg<2>,boost::_bi::value<int> > >':
> unit_test_suite_ex_test.cpp:80: instantiated from here
> ../../../boost/bind/bind_template.hpp:16: no type named `type' in
`struct
> boost::_bi::result_traits<boost::_bi::unspecified,void (*)(int, int)
>'
> ../../../boost/bind/bind_template.hpp:19: no type named `type' in
`struct
> boost::_bi::result_traits<boost::_bi::unspecified,void (*)(int, int)

Peter, could you help here. I am a bit confused with this errors.
Maybe &test2 should be substituted with ptr_fun( &test2 )?

[...]

Everything else is just a repetition.

> - John Maddock
> http://ourworld.compuserve.com/homepages/john_maddock/

Gennadiy.


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