Boost logo

Boost :

Subject: [boost] [fusion] boost::fusion::nil bug
From: Jeroen Habraken (vexocide_at_[hidden])
Date: 2011-08-21 06:03:22


Hi,

Clang 2.9 just pointed out what's probably an error in fusion in
boost-trunk, the same one I ran into during the Conversion review
yesterday it seems. Note that GCC doesn't complain even with -Wall
-Wextra -pedantic.

The error:

In file included from fusion.cpp:1:
In file included from boost-trunk/boost/fusion/include/vector.hpp:10:
In file included from boost-trunk/boost/fusion/container/vector.hpp:11:
In file included from boost-trunk/boost/fusion/container/vector/vector10.hpp:15:
In file included from boost-trunk/boost/fusion/sequence/intrinsic/begin.hpp:17:
In file included from
boost-trunk/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp:11:
In file included from
boost-trunk/boost/fusion/iterator/segmented_iterator.hpp:13:
In file included from boost-trunk/boost/fusion/container/list/cons.hpp:14:
In file included from boost-trunk/boost/fusion/sequence/intrinsic/end.hpp:17:
boost-trunk/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp:33:70:
error: invalid use of incomplete type 'fusion::nil'
                segmented_end_impl<Sequence, fusion::nil>::call(seq,
fusion::nil()));

^~~~~~~~~~~~~
In file included from fusion.cpp:1:
In file included from boost-trunk/boost/fusion/include/vector.hpp:10:
In file included from boost-trunk/boost/fusion/container/vector.hpp:11:
In file included from boost-trunk/boost/fusion/container/vector/vector10.hpp:15:
In file included from boost-trunk/boost/fusion/sequence/intrinsic/begin.hpp:17:
In file included from
boost-trunk/boost/fusion/sequence/intrinsic/detail/segmented_begin.hpp:10:
In file included from
boost-trunk/boost/fusion/sequence/intrinsic/detail/segmented_begin_impl.hpp:11:
boost-trunk/boost/fusion/container/list/cons_fwd.hpp:13:12: note:
forward declaration of 'boost::fusion::nil'
    struct nil;
           ^
1 error generated.

The code to reproduce the error:

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

int main(int, char*[]) {
    return 0;
}

It seems nil is either only forward-declared or the include with the
declaration is missing.

Kind regards,
Jeroen Habraken


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