所以我构建了我的boost::mpl::map
对象,其中包含一些键和类型的混合。我现在想要实例化地图的一个实例,以便我在地图中对每个type
进行实例化:
using namespace boost::mpl;
using MyMap = map<
pair<int, double>,
pair<double, double>,
pair<bool, int>>;
int main()
{
// create the map:
MyMap myMap;
// now I want a reference to the element indexed by "int"
using RefType = at<MyMap, int>::type&;
RefType myRef(myMap); // compile error!
}
我得到的错误是:
显然我应该得到某种&#34;索引&#34;价值(也许错误:无法转换&#39; MyMap {aka map&lt; ...&gt;}到blarghh {aka int}
boost::mpl::map::order
?)。那么如何在这些关联mpl
容器中实际访问(即获取引用)元素?另外,关于如何(单独)完成的文档在哪里?
答案 0 :(得分:0)
您的代码存在一些问题:
<boost/mpl/at.hpp>
是一个问题。MyMap myMap
。您通常不会实例化MPL类型。此代码有效,希望它大致是你想要的。
#include <boost/mpl/map.hpp>
#include <boost/mpl/at.hpp>
using namespace boost::mpl;
using MyMap = map<
pair<int, double>,
pair<double, double>,
pair<bool, int>>;
int main()
{
using RefType = at<MyMap, int>::type&;
double foo;
RefType myRef(foo);
}