VS 2013 RC中的Boost Fusion编译错误

时间:2013-09-18 17:30:25

标签: c++ visual-c++ boost visual-studio-2013 boost-fusion

你好,我从VS 2013 RC中获得了最新的Boost。建立了提升,它起作用。

但是在针对Boost编译我的项目时,我使用了Boost Fusion。我收到了100条这些错误消息 -

错误1086错误C3520:'T':必须在此上下文中扩展参数包

它指的是make_vector10.hpp中的这段代码

namespace result_of
{
    template <typename T0 , typename T1 , typename T2>
    struct make_vector<T0 , T1 , T2>
    {
        typedef vector3<typename detail::as_fusion_element<T0>::type , typename detail::as_fusion_element<T1>::type , typename detail::as_fusion_element<T2>::type> type;
    };
}

但这里没有使用模板参数“T”。

这也不是一个可变参数模板,所以我不明白为什么它引用错误消息中的参数包。 “vector3”和“as_fusion_element”也不是变量。

make_vector的所有变体都给了我同样的错误btw(也是make_set)。

任何人都知道这里发生了什么?感谢

这是一个最小的复制品

#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;

}

1 个答案:

答案 0 :(得分:1)

Felix Petroconi在评论中报道了compiler bug

解决方法:获得最新的提升,但回滚融合到早期版本