Boost logo

Boost :

From: Larry Evans (cppljevans_at_[hidden])
Date: 2006-08-21 09:17:03


I just updated the version of SEGMENTED_FUSION with:

cd \
~/prog_dev/boost-cvs/ro/boost/sandbox/fusion/SEGMENTED_FUSION_V2/ro/spirit/
cvs -z2 update -P

The CVS/TAG file conains:

TSEGMENTED_FUSION_V2

I've added:

*/ro/spirit/libs/fusion/test/sequence/ctor_forwarding_test-construction.hpp

with contents:

#include <boost/detail/lightweight_test.hpp>
#include <boost/fusion/sequence/intrinsic/at.hpp>

#if !defined(FUSION_AT)
#define FUSION_AT at_c
#endif

inline void
test()
{
    using namespace boost::fusion;

    FUSION_SEQUENCE<int, float> t4;
    BOOST_TEST(FUSION_AT<0>(t4) == int());
    BOOST_TEST(FUSION_AT<1>(t4) == float());
#if 1
    FUSION_SEQUENCE<int, float> t5(12);
    BOOST_TEST(FUSION_AT<0>(t5) == 12);
    BOOST_TEST(FUSION_AT<1>(t5) == float());
#endif
    FUSION_SEQUENCE<int, float> t6(12, 5.5f);
    BOOST_TEST(FUSION_AT<0>(t6) == 12);
    BOOST_TEST(FUSION_AT<1>(t6) > 5.4f && FUSION_AT<1>(t6) < 5.6f);

}

and also added:

*/ro/spirit/libs/fusion/test/sequence/ctor_forwarding_test-main.hpp

with contents:

#include <boost/fusion/tuple/tuple.hpp>

#define FUSION_SEQUENCE tuple
#define FUSION_AT get
#include "ctor_forwarding_test-construction.hpp"

int
main()
{
    test();
    return boost::report_errors();
}

and modified the */ro/spirit/libs/fusion/test/Jamfile.v2 to just have:

    #[ run sequence/tuple_construction.cpp : : : : ]
    [ run sequence/ctor_forwarding_test-main.cpp : : : : ]
    #[ run sequence/tuple_copy.cpp : : : : ]

When I ran `bjam --v2` from the */fusion/test directory, I got:

gcc.compile.c++
../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro/spirit/libs
  /fusion/test/ctor_forwarding_test-main.test/gcc/debug
  /ctor_forwarding_test-main.o
../../../boost/fusion/sequence/container/vector/detail/vector_forward_ctor.hpp:
In constructor 'boost::fusion::vector<T0, T1, T2, T3, T4, T5, T6, T7,
T8, T9>::vector(typename boost::fusion::detail::call_param<T>::type)
[with T0 = int, T1 = float, T2 = boost::fusion::void_, T3 =
boost::fusion::void_, T4 = boost::fusion::void_, T5 =
boost::fusion::void_, T6 = boost::fusion::void_, T7 =
boost::fusion::void_, T8 = boost::fusion::void_, T9 =
boost::fusion::void_]':
../../../boost/fusion/tuple/detail/tuple_forward_ctor.hpp:36:
instantiated from 'boost::fusion::tuple<T0, T1, T2, T3, T4, T5, T6, T7,
T8, T9>::tuple(typename boost::fusion::detail::call_param<T>::type)
[with T0 = int, T1 = float, T2 = boost::fusion::void_, T3 =
boost::fusion::void_, T4 = boost::fusion::void_, T5 =
boost::fusion::void_, T6 = boost::fusion::void_, T7 =
boost::fusion::void_, T8 = boost::fusion::void_, T9 = boost::fusion::void_]'
sequence/ctor_forwarding_test-construction.hpp:25: instantiated from here
../../../boost/fusion/sequence/container/vector/detail
  /vector_forward_ctor.hpp:36:
error: no matching function for call to 'boost::fusion::vector2<int,
float>::vector2(const int&)'
../../../boost/fusion/sequence/container/vector/detail/vector_n.hpp:93:
note: candidates are: boost::fusion::vector2<T0, T1>::vector2(typename
boost::fusion::detail::call_param<T>::type, typename
boost::fusion::detail::call_param<T0>::type) [with T0 = int, T1 = float]
../../../boost/fusion/sequence/container/vector/detail/vector_n.hpp:90:
note: boost::fusion::vector2<T0, T1>::vector2() [with T0
= int, T1 = float]
../../../boost/fusion/sequence/container/vector/detail/vector_n.hpp:80:
note: boost::fusion::vector2<int, float>::vector2(const
boost::fusion::vector2<int, float>&)

    "/usr/bin/g++-4.1" -ftemplate-depth-128 -O0 -fno-inline -Wall -g
-fPIC -DBOOST_ALL_NO_LIB=1 -I"../../.." -I"../../../../../../../.."
-I"../../../../../../../lje"
-I"../../../../../../cvs/SEGMENTED_FUSION_V2/ro/spirit" -c -o
"../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug
  /ctor_forwarding_test-main.o"
"sequence/ctor_forwarding_test-main.cpp"

...failed gcc.compile.c++
../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug
  /ctor_forwarding_test-main.o...
...removing
../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug
  /ctor_forwarding_test-main.o
...skipped
<p../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug>
  ctor_forwarding_test-main
for lack of
<p../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug>
  ctor_forwarding_test-main.o...
...skipped
<p../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug>
    ctor_forwarding_test-main.run
for lack of
<p../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug>
  ctor_forwarding_test-main...
...removing outdated
../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug
  /ctor_forwarding_test-main.test
...failed updating 1 target...
...skipped 3 targets...

Compilation exited abnormally with code 1 at Sun Aug 20 14:21:02

However, when I changed the *-construction.hpp file to disable the CTOR
call with just the single argument (by changing '#if 1' to '#if 0'), I
got:

cd
/home/evansl/prog_dev/boost-cvs/ro/boost/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/
bjam --v2
warning: Python location is not configured
warning: the Boost.Python library won't be built
Building Boost.Regex with the optional Unicode/ICU support disabled.
Please refer to the Boost.Regex documentation for more information
(and if you don't know what ICU is then you probably don't need it).
...patience...
...found 448 targets...
...updating 4 targets...
gcc.compile.c++
../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug
  /ctor_forwarding_test-main.o
gcc.link
../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug
  /ctor_forwarding_test-main
testing.capture-output
../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug
  /ctor_forwarding_test-main.run
**passed**
../../../../../../../../bin.v2/sandbox/fusion/SEGMENTED_FUSION_V2/ro
  /spirit/libs/fusion/test/ctor_forwarding_test-main.test/gcc/debug
  /ctor_forwarding_test-main.test
...updated 4 targets...

Compilation finished at Sun Aug 20 14:22:34

So, I think there's some problem with the forwarding code.
I'll try and track down the problem, but please let me knnow if I'm
missing something.

-thanks,
Larry


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