Opened 9 years ago
Closed 13 months ago
#8721 closed Bugs (worksforme)
Boost.Variant and Boost.Fusion incompatibility
| Reported by: | Owned by: | ebf | |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | variant |
| Version: | Boost 1.53.0 | Severity: | Problem |
| Keywords: | Cc: |
Description
#include <boost/variant.hpp>
#include <boost/fusion/include/vector.hpp>
struct emptyList {};
typedef boost::make_recursive_variant
< emptyList
, boost::fusion::vector
< int
, boost::recursive_variant_
>
>::type IntList;
const emptyList el = emptyList();
const IntList nil( el );
IntList cons( int head, IntList tail )
{
return IntList( boost::fusion::vector<int, IntList>( head, tail ) );
}
Change History (3)
comment:1 by , 9 years ago
comment:2 by , 9 years ago
Using std::tuple (From gcc 4.8.1) or boost::tuple instead also produces errors.
comment:3 by , 13 months ago
| Resolution: | → worksforme |
|---|---|
| Status: | new → closed |
The example now works on modern versions of Boost in C++11 and more modern C++ Standards: https://godbolt.org/z/4o1acx1o8
Added a test case to make sure that the code keeps compiling: https://github.com/boostorg/variant/commit/445d790b2fe81b1b3d413d2fd464fe78712d535f
I'm not planning to work on C++03 support for that case, but would be happy to review Pull Request.
Note:
See TracTickets
for help on using tickets.

I have a suspicion that the problem may have something to do with BOOST_VARIANT_RECURSIVE_VARIANT_MAX_ARITY.
I've confirmed the issue on both clang cvs and gcc 4.8.1.