boost-mpl

    2热度

    1回答

    消失下面的例子说明我的意思: #include <boost/mpl/map.hpp> #include <boost/mpl/for_each.hpp> #include <boost/mpl/pair.hpp> #include <boost/mpl/at.hpp> #include <boost/mpl/insert.hpp> #includ

    1热度

    1回答

    当我尝试编写调用MPL代码的元函数时,我似乎错过了一些东西。后续的代码失败与INST2以下错误编译,但INST1正常工作: 错误C2903:“适用”:符号既不是类模板,也不是函数模板 using namespace boost::mpl; template <typename VECTOR> struct first_element : mpl::at_c<VECTOR, 0> {};

    1热度

    1回答

    我希望这个问题不会太过复杂。我意识到,元编程在类型上而不是在这些类型的对象上起作用;然而,我仍然试图达到相同的结果,通过1)从类中检索类型信息,然后2)在该类型信息上的元函数。 我的情况的解释是简化代码摘录如下: 我有矩阵,其中我打电话Matrix_Base一个模板类。与Eigen所采用的方法有点相似,我允许两种可能的矩阵大小 - 在编译时固定或在运行时固定。 Matrix_Base的简化声明为:

    2热度

    1回答

    我想遍历任何融合结构的成员,将其成员的类型添加到一个boost :: mpl :: vector(或set)来创建这些类型的boost :: variant。任何帮助表示赞赏。 struct A { int a1; double a2; float a3; }; BOOST_FUSION_ADAPT_STRUCT( A, (int,a1)

    1热度

    1回答

    我正在尝试使用boost-mpl的地图容器来执行基于策略的设计的POC。 (code here) 我绕过使用MPL ::地图,默认情况下是空的我的政策: typedef boost::mpl::map<> DefaultPolicy; 获得策略我试过如下: typedef typename boost::mpl::at<TPolicy, LogPK, DefaultLogP>::type Lo

    1热度

    1回答

    boost::mpl::apply元函数仅适用于模板类型参数。例如,下面的工作: using namespace boost::mpl; template <class U, class S = int> struct Bar { }; using BarInt = apply<Bar<_1>, int>::type; 但是,如果我有一个非类型参数单独的类模板: template <

    0热度

    1回答

    以下使用mpl :: list来初始化一个boost变体。然后它序列化变体。它编译和工作正常保存但不加载。编译甚至加载失败。有谁知道这个问题是什么? 感谢 Attribute.h #include <string> #include <boost/archive/xml_oarchive.hpp> #include <boost/archive/xml_iarchive.hpp> temp

    1热度

    1回答

    所以我想获得一个唯一的类型列表,我想摆脱所有常量重复,我通过列表可能会包含。我认为下面的代码应该可以工作,但my_set包含两次“int”。我究竟做错了什么? #include <boost/mpl/vector.hpp> #include <boost/mpl/transform.hpp> #include <boost/type_traits/remove_cv.hpp> #includ

    8热度

    3回答

    我有不同的向量 mpl::vector<Type1, Type2...> mpl::vector<Type3, Type4...> 我想 “串联” 起来,形成: mpl::vector<Type1, Type2, Type3, Type4...> 这将使我准备矢量模板并在之后重新使用它们。 我的问题有不同的解决方案,但这种方法似乎最适合我。 谢谢...

    0热度

    2回答

    我正在尝试在我的代码中使用and_,并且它的返回类型有问题。我试图用它接受并返回true_type或false_type的其他元编程结构,我也使用这些类型的SFINAE重载。 boost :: mpl :: and_和boost :: mpl :: or_从mpl的其余部分返回不同的类型。至少,这似乎对我来说。 mpl_::failed************ boost::is_same<mpl