подталкивания MPL документации говорится, что повышение :: Карта :: равныйboost :: mpl :: map failed boost :: mpl :: equal?
«Возвращает истинное многозначных Интегральная постоянная, если две последовательности Seq1 и SEQ2 идентичны, когда по сравнению _element_ по _element_.
но мне кажется, что карта последовательности ассоциативно не проверяется на равенство элемента _ мудрой _:
следующая демонстрация покажет это: Map2 должен быть равен Map3, которые оба увеличивают значение 'int_ < 1>' value_type в 'key'. Посмотрите на typedef, определяющий Map3. Размер и единственный элемент сбрасывается п демо:
#include<iostream>
#include<boost/mpl/map.hpp>
#include<boost/mpl/at.hpp>
#include<boost/mpl/insert.hpp>
#include<boost/mpl/erase_key.hpp>
#include<boost/mpl/pair.hpp>
#include<boost/mpl/int.hpp>
#include<boost/mpl/plus.hpp>
#include<boost/mpl/equal.hpp>
#include<boost/mpl/size.hpp>
#include<boost/mpl/front.hpp>
namespace mpl = boost::mpl;
using mpl::int_;
using std::cout;
using std::endl;
using std::is_same;
int main(int argc, char *argv[])
{
typedef int key;
typedef typename mpl::map<mpl::pair<key, int_<1>>> Map;
typedef typename mpl::map<mpl::pair<key, int_<2>>> Map2;
typedef typename mpl::insert<
typename mpl::erase_key<Map,
key>::type,
mpl::pair<key,
typename mpl::plus<int_<1>,
typename mpl::at<Map, key>::type>::type
>::type
>::type Map3;
cout << "equal? " << mpl::equal<Map2,Map3>::type::value << endl;
cout << "size? " << mpl::size<Map3>::value << endl;
cout << "key type at front? " << typeid(mpl::front<Map3>::type::first).name() << endl;
cout << "value type at front? " << mpl::front<Map3>::type::second::value << endl;
cout << "expected size? " << mpl::size<Map2>::value << endl;
cout << "expected key type at front? " << typeid(mpl::front<Map2>::type::first).name() << endl;
cout << "expected value type at front? " << mpl::front<Map2>::type::second::value << endl;
return 0;
}
Я использую GCC 4.8.1 с повышением 1,51
Также тег [tag: mpl] не связан с Boost.MPL. Тег, который вы хотите, - [tag: boost-mpl]. Вероятно, вы получите ответ от того, кто знает, о чем он говорит, если вы его добавите. – llonesmiz