我设法很好地使用了 Boost MPL 向量和列表,但我就是想不出地图。当我尝试插入其中时,我从 clang 3.1 得到“参数太少”(gcc 4.7 说了类似的话)。有一个版本的插入,其中第二个参数是 POS,它应该被忽略,所以我尝试在那里插入一个虚拟类型 (int),但这只会给出一个新的和令人困惑的错误。
include <iostream>
#include <boost/mpl/key_type.hpp>
#include <boost/mpl/map.hpp>
using namespace boost;
using namespace mpl;
int main(){
typedef pair<int_<3>, int_<6>> obj;
std::cout << key_type<map<>, obj >::type::value << std::endl; //works
std::cout << has_key<insert<map<>, obj>::type, obj)::type::value << std::endl; //complains on "too few template arguments for class template 'insert'
std::cout << has_key<insert<map<>, int, obj>::type, obj)::type::value << std::endl; // gives "implicit instantiation of undefined template 'boost::mpl::insert<..."
}
MPL 错误并不完全有帮助,即使是铿锵声,所以我只是不明白我在这里做错了什么?我敢肯定这很愚蠢。
http://www.boost.org/doc/libs/1_51_0/libs/mpl/doc/refmanual/map.html