使用 boost mpl pop_front

发布于 2024-12-12 21:45:27 字数 426 浏览 2 评论 0原文

有:

#include <typeinfo>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/pop_front.hpp>
int main()
{
    typedef boost::mpl::vector<char,short,int,long,long long> v;
    typedef typename pop_front<v>::type poped;
}

问题是 poped 不等于 boost::mpl::vector<短,整数,长,长长>但是: boost::mpl::v_mask<升压::mpl::向量<字符,短,整数,长,长长>>

我该如何让它返回没有第一个元素的向量?

Having:

#include <typeinfo>
#include <boost/mpl/vector.hpp>
#include <boost/mpl/pop_front.hpp>
int main()
{
    typedef boost::mpl::vector<char,short,int,long,long long> v;
    typedef typename pop_front<v>::type poped;
}

the problem is that poped is not equal to boost::mpl::vector< short,int,long,long long > but to: boost::mpl::v_mask< boost::mpl::vector< char,short,int,long,long long>>

How shall I make it to return vector without first element?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鹿! 2024-12-19 21:45:27

也许 mpl::equal 可以帮助您澄清为什么这根本不重要。

只要确保它相等,但不一定相同。

BOOST_MPL_ASSERT((mpl::equal<
    typename pop_front<v>::type,
    mpl::vector<short,int,long,long long>
>));

这就是您真正需要的;-)

Maybe mpl::equal can help you clarify why this doesn't really matter at all.

Just make sure it's equal, but not necessarily the same.

BOOST_MPL_ASSERT((mpl::equal<
    typename pop_front<v>::type,
    mpl::vector<short,int,long,long long>
>));

That is all you really need ;-)

甜警司 2024-12-19 21:45:27

我不确定使用 MPL 功能是否可以实现这一点。即使您尝试使用 copyback_inserterpoped 复制到 vector 中,您也会再次获得一个类型这并不是真正的向量。这是设计使然:就像在 Boost.Fusion 中一样,MPL 的算法和元函数返回原始序列的视图,提供惰性评估。这些视图可以像原始序列一样使用,因此您不必担心它们的实际类型是什么,只需将它们当作向量(或列表,或地图等)。

I am not sure this is possible using MPL features. Even if you tried copying poped into a vector using copy and a back_inserter, you would once again obtain a type which is not really a vector. This is by design: like in Boost.Fusion, MPL's algorithms and metafunctions return views over the original sequence, providing lazy evaluation. These views can be used like the original sequences, so you should not worry about what their actual types are and simply use them as if they were vector (or lists, or maps, etc.).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文