gpt4 book ai didi

c++ - 使用 boost::mpl 获取 vector 的大小

转载 作者:行者123 更新时间:2023-11-30 05:37:26 25 4
gpt4 key购买 nike

我正在尝试编译这段代码,我是通用编程的新手。目的是获取 boost::mpl 中 vector 的大小。在 boost::mpl 中尝试我的手。我不知道为什么这段代码没有编译。

错误:“vectorsum >”类中的“type”没有命名类型

#include <boost/mpl/distance.hpp>
#include <boost/static_assert.hpp>
#include <boost/mpl/begin_end.hpp>
#include <boost/mpl/deref.hpp>
#include <boost/mpl/equal.hpp>
#include <boost/mpl/greater_equal.hpp>
#include <boost/mpl/push_back.hpp>
#include <boost/mpl/times.hpp>
#include <boost/mpl/vector_c.hpp>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/push_back.hpp>

using namespace boost::mpl;

template <typename Seq>
struct vectorsum_impl
{
typedef typename boost::mpl::begin<Seq>::type typestart;
typedef typename boost::mpl::end<Seq>::type typeend;
typedef typename boost::mpl::distance<typestart,typeend>::type half_size;
};

template <typename S>
struct vectorsum: vectorsum_impl<S> {};

typedef boost::mpl::vector_c<int, 1, 2, 3, 4> testVec;
typedef vectorsum<testVec>::type testVec2;

main()
{
}

最佳答案

为了获得 boost MPL 序列的大小,我建议使用 boost::mpl::size :

#include <boost/mpl/size.hpp>
#include <boost/mpl/vector_c.hpp>
#include <iostream>

int main()
{
typedef boost::mpl::vector_c<int, 1, 2, 3, 4> testVec;
std::cout << boost::mpl::size<testVec>::value;
return 0;
}

输出:

4

live example

关于c++ - 使用 boost::mpl 获取 vector 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com