Opened 9 years ago

Closed 8 years ago

#9130 closed Bugs (worksforme)

Boost Fusion parameter pack error in VS 2013 RC

Reported by: dain.bray@… Owned by: Joel de Guzman
Milestone: To Be Determined Component: fusion
Version: Boost 1.54.0 Severity: Showstopper
Keywords: Cc: flast@…

Description

fusion::map does not compile in VS 2013 RC.

If gives these errors:

error C3520: 'T' : parameter pack must be expanded in this context c:\depo\common\third_party\boost\boost\fusion\container\generation\make_cons.hpp 39 error C3520: 'T' : parameter pack must be expanded in this context c:\depo\common\third_party\boost\boost\fusion\container\generation\detail\preprocessed\make_list10.hpp error C3520: 'T' : parameter pack must be expanded in this context c:\depo\common\third_party\boost\boost\fusion\container\generation\detail\preprocessed\make_vector10.hpp error C3520: 'T' : parameter pack must be expanded in this context c:\depo\common\third_party\boost\boost\fusion\container\generation\detail\preprocessed\make_set10.hpp

Here is the complete template callstack for one of them(it is not very helpful sorry).

c:\depo\common\third_party\boost\boost\fusion\container\generation\detail\preprocessed\make_list10.hpp(35): error C3520: 'T' : parameter pack must be expanded in this context 1> c:\depo\common\third_party\boost\boost\fusion\container\generation\detail\preprocessed\make_list10.hpp(36) : see reference to class template instantiation 'boost::fusion::result_of::make_list<T0,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_>' being compiled

The example I am posting gives 66 of these errors.

Here is a minimal repro test.

#include <boost/fusion/container.hpp> #include <boost/fusion/algorithm.hpp> #include <boost/fusion/include/algorithm.hpp> #include <boost/fusion/sequence.hpp> #include <boost/fusion/include/sequence.hpp> #include <boost/fusion/support/pair.hpp> #include <boost/fusion/include/pair.hpp>

namespace fs = boost::fusion;

namespace Key {

struct prep_table{}; struct draw_single{};

};

int main() {

fs::map<std::pair<Key::prep_table, float>, std::pair<Key::draw_single, int>> Blah;

return 0;

}

Change History (4)

comment:1 by anonymous, 9 years ago

This is using the SVN trunk btw. The official 1.54 doesn't build in VS 2013 RC, need trunk.

comment:2 by Kohei Takahashi <flast@…>, 8 years ago

Cc: flast@… added

Did you try with release version of VS2013 or Boost 1.57?

comment:3 by Kohei Takahashi <flast@…>, 8 years ago

I could't confirm this problem with VS2013 Update4 and develop branch. So, we can close this one.

comment:4 by Joel de Guzman, 8 years ago

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