Opened 7 years ago

Closed 7 years ago

#11877 closed Bugs (wontfix)

fusion at_c compile error on join of two vectors

Reported by: anonymous Owned by: Joel de Guzman
Milestone: To Be Determined Component: fusion
Version: Boost 1.60.0 Severity: Problem
Keywords: Cc:

Description

using visual studio 2015.1 compile error:

1>------ Build started: Project: ConsoleApplication1, Configuration: Debug Win32 ------ 1> main.cpp 1>e:\boost_1_60_0\include\boost\fusion\sequence\intrinsic\at.hpp(75): error C2504: 'boost::fusion::extension::at_impl<Tag>::apply<Sequence,N>': base class undefined 1> with 1> [ 1> Tag=boost::fusion::joint_view_tag 1> ] 1> and 1> [ 1> Sequence=const boost::fusion::joint_view<const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>,const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>>, 1> N=boost::mpl::int_<1> 1> ] 1> e:\boost_1_60_0\include\boost\fusion\sequence\intrinsic\at.hpp(83): note: see reference to class template instantiation 'boost::fusion::detail::at_impl<Sequence,N,boost::fusion::joint_view_tag>' being compiled 1> with 1> [ 1> Sequence=const boost::fusion::joint_view<const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>,const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>>, 1> N=boost::mpl::int_<1> 1> ] 1> e:\boost_1_60_0\include\boost\fusion\sequence\intrinsic\at.hpp(88): note: see reference to class template instantiation 'boost::fusion::result_of::at<Sequence,boost::mpl::int_<1>>' being compiled 1> with 1> [ 1> Sequence=const boost::fusion::joint_view<const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>,const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>> 1> ] 1> e:\gitlab\vs\consoleapplication1\consoleapplication1\main.cpp(14): note: see reference to class template instantiation 'boost::fusion::result_of::at_c<const boost::fusion::joint_view<LhSequence,RhSequence>,1>' being compiled 1> with 1> [ 1> LhSequence=const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>, 1> RhSequence=const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_> 1> ] 1>e:\boost_1_60_0\include\boost\fusion\sequence\intrinsic\at.hpp(75): error C2504: 'boost::fusion::extension::at_impl<Tag>::apply<Sequence,N>': base class undefined 1> with 1> [ 1> Tag=boost::fusion::joint_view_tag 1> ] 1> and 1> [ 1> Sequence=boost::fusion::joint_view<const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>,const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>>, 1> N=boost::mpl::int_<1> 1> ] 1> e:\boost_1_60_0\include\boost\fusion\sequence\intrinsic\at.hpp(83): note: see reference to class template instantiation 'boost::fusion::detail::at_impl<Sequence,N,boost::fusion::joint_view_tag>' being compiled 1> with 1> [ 1> Sequence=boost::fusion::joint_view<const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>,const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>>, 1> N=boost::mpl::int_<1> 1> ] 1> e:\boost_1_60_0\include\boost\fusion\sequence\intrinsic\at.hpp(88): note: see reference to class template instantiation 'boost::fusion::result_of::at<Sequence,boost::mpl::int_<1>>' being compiled 1> with 1> [ 1> Sequence=boost::fusion::joint_view<const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>,const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>> 1> ] 1> e:\boost_1_60_0\include\boost\core\enable_if.hpp(68): note: see reference to class template instantiation 'boost::fusion::result_of::at_c<boost::fusion::joint_view<LhSequence,RhSequence>,1>' being compiled 1> with 1> [ 1> LhSequence=const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>, 1> RhSequence=const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_> 1> ] 1> e:\boost_1_60_0\include\boost\core\enable_if.hpp(75): note: see reference to class template instantiation 'boost::lazy_disable_if_c<false,T>' being compiled 1> with 1> [ 1> T=boost::fusion::result_of::at_c<boost::fusion::joint_view<const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>,const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>>,1> 1> ] 1> e:\gitlab\vs\consoleapplication1\consoleapplication1\main.cpp(14): note: see reference to class template instantiation 'boost::lazy_disable_if<boost::is_const<boost::fusion::joint_view<LhSequence,RhSequence>>,boost::fusion::result_of::at_c<boost::fusion::joint_view<LhSequence,RhSequence>,1>>' being compiled 1> with 1> [ 1> LhSequence=const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>, 1> RhSequence=const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_> 1> ] 1>e:\boost_1_60_0\include\boost\core\enable_if.hpp(68): error C2039: 'type': is not a member of 'boost::fusion::result_of::at_c<boost::fusion::joint_view<LhSequence,RhSequence>,1>' 1> with 1> [ 1> LhSequence=const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_>, 1> RhSequence=const boost::fusion::vector<int,char,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_,boost::fusion::void_> 1> ] 1>e:\boost_1_60_0\include\boost\core\enable_if.hpp(68): error C3646: 'type': unknown override specifier 1>e:\boost_1_60_0\include\boost\core\enable_if.hpp(68): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Attachments (1)

main.cpp (424 bytes ) - added by sstsai@… 7 years ago.

Download all attachments as: .zip

Change History (4)

by sstsai@…, 7 years ago

Attachment: main.cpp added

comment:1 by Kohei Takahashi <flast@…>, 7 years ago

It is not a bug, but by design. fusion::at_c requires Random Access Sequence, but fusion::join returns fusion::joint_view i.e. Forward Access Sequence.

comment:2 by Joel de Guzman, 7 years ago

Solution: use as_vector

comment:3 by Joel de Guzman, 7 years ago

Resolution: wontfix
Status: newclosed
Note: See TracTickets for help on using tickets.