[fusion] g++-4.6, deque, and c++0x compile error

The following trivial program does not compile with g++-4.6.1 and std=c++0x enabled. #include <boost/fusion/container.hpp> int main( int argc , char *argv[] ) { } Seems like a bug, or should I configure something via macros?

On Wed, Jul 4, 2012 at 10:54 AM, Karsten Ahnert <karsten.ahnert@ambrosys.de> wrote:
The following trivial program does not compile with g++-4.6.1 and std=c++0x enabled.
#include <boost/fusion/container.hpp>
int main( int argc , char *argv[] ) { }
Seems like a bug, or should I configure something via macros?
What's the error msg? Olaf

On 7/4/2012 4:57 PM, Olaf van der Spek wrote:
On Wed, Jul 4, 2012 at 10:54 AM, Karsten Ahnert <karsten.ahnert@ambrosys.de> wrote:
The following trivial program does not compile with g++-4.6.1 and std=c++0x enabled.
#include <boost/fusion/container.hpp>
int main( int argc , char *argv[] ) { }
Seems like a bug, or should I configure something via macros?
What's the error msg?
Boost trunk? Can't reproduce the problem here. gcc version 4.6.1 Flags: -Wall -mconsole -ftemplate-depth-512 -fpermissive -DNDEBUG -DNDEBUG -O3 -finline-functions -funroll-loops -Wfatal-errors -std=c++0x -static-libgcc -static-libstdc++ Regards, -- Joel de Guzman http://www.boostpro.com http://boost-spirit.com

On 07/04/2012 11:02 AM, Joel de Guzman wrote:
On 7/4/2012 4:57 PM, Olaf van der Spek wrote:
On Wed, Jul 4, 2012 at 10:54 AM, Karsten Ahnert <karsten.ahnert@ambrosys.de> wrote:
The following trivial program does not compile with g++-4.6.1 and std=c++0x enabled.
#include <boost/fusion/container.hpp>
int main( int argc , char *argv[] ) { }
Seems like a bug, or should I configure something via macros?
What's the error msg?
Boost trunk? Can't reproduce the problem here.
Its boost_1_50_0 in trunk the problem does not occur. So I think it is already fixed. Sorry for the noise.
gcc version 4.6.1
Flags: -Wall -mconsole -ftemplate-depth-512 -fpermissive -DNDEBUG -DNDEBUG -O3 -finline-functions -funroll-loops -Wfatal-errors -std=c++0x -static-libgcc -static-libstdc++
Regards,

On 7/4/2012 5:08 PM, Karsten Ahnert wrote:
On 07/04/2012 11:02 AM, Joel de Guzman wrote:
On 7/4/2012 4:57 PM, Olaf van der Spek wrote:
On Wed, Jul 4, 2012 at 10:54 AM, Karsten Ahnert <karsten.ahnert@ambrosys.de> wrote:
The following trivial program does not compile with g++-4.6.1 and std=c++0x enabled.
#include <boost/fusion/container.hpp>
int main( int argc , char *argv[] ) { }
Seems like a bug, or should I configure something via macros?
What's the error msg?
Boost trunk? Can't reproduce the problem here.
Its boost_1_50_0 in trunk the problem does not occur. So I think it is already fixed. Sorry for the noise.
Nevertheless, this is an unwanted bug in the release :(. deque is broken on boost_1_50_0 for C++11. Let's hope we have boost_1_50_1 soon. Regards, -- Joel de Guzman http://www.boostpro.com http://boost-spirit.com

On 07/04/2012 10:57 AM, Olaf van der Spek wrote:
On Wed, Jul 4, 2012 at 10:54 AM, Karsten Ahnert <karsten.ahnert@ambrosys.de> wrote:
The following trivial program does not compile with g++-4.6.1 and std=c++0x enabled.
#include <boost/fusion/container.hpp>
int main( int argc , char *argv[] ) { }
Seems like a bug, or should I configure something via macros?
What's the error msg?
Here it is: g++ -I$BOOST_ROOT -std=c++0x fusion_bug.cpp In file included from /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/deque.hpp:43:0, from /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque.hpp:11, from /home/karsten/boost/boost_1_50_0/boost/fusion/container.hpp:14, from fusion_bug.cpp:1: /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp:22:12: error: redeclared with 2 template parameters /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values10.hpp:15:12: note: previous declaration ‘template<class N, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9> struct boost::fusion::detail::deque_keyed_values_impl’ used 11 template parameters /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp:25:52: sorry, unimplemented: cannot expand ‘Tail ...’ into a fixed-length argument list /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp:45:12: error: redefinition of ‘struct boost::fusion::detail::deque_keyed_values_impl<N, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>’ /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values10.hpp:17:12: error: previous definition of ‘struct boost::fusion::detail::deque_keyed_values_impl<N, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, boost::fusion::void_>’ /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp:52:12: error: redeclared with 1 template parameter /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/detail/preprocessed/deque_keyed_values10.hpp:114:12: note: previous declaration ‘template<class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9> struct boost::fusion::detail::deque_keyed_values’ used 10 template parameters /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp:53:58: sorry, unimplemented: cannot expand ‘Elements ...’ into a fixed-length argument list In file included from /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque.hpp:11:0, from /home/karsten/boost/boost_1_50_0/boost/fusion/container.hpp:14, from fusion_bug.cpp:1: /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/deque.hpp:67:49: sorry, unimplemented: cannot expand ‘Tail ...’ into a fixed-length argument list /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/deque.hpp:67:52: error: expected ‘{’ before ‘type’ /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/deque.hpp:68:7: error: invalid type in declaration before ‘,’ token /home/karsten/boost/boost_1_50_0/boost/fusion/container/deque/deque.hpp:68:7: error: template declaration of ‘int boost::fusion::type’
participants (3)
-
Joel de Guzman
-
Karsten Ahnert
-
Olaf van der Spek