Можно ли вложить карту слияния в карту слияния?

Я новичок в фьюжн. Можно ли вложить карту слияния в карту слияния? Как мне написать код для разрешения B в приведенном ниже примере?

#include <boost/asio.hpp>
#include <boost/fusion/container/map.hpp>
#include <boost/unordered_map.hpp>

struct A
{
};

struct B
{
};

int main()
{
boost::fusion::map<
boost::fusion::pair<
A,
boost::fusion::map<boost::fusion::pair<unsigned int, B>>
>
> map_;

B b = boost::fusion::at_key<unsigned int>((boost::fusion::at_key<A>(map_)); //compile error
}

3

Решение

Помимо синтаксической ошибки (лишние скобки), вам просто не хватает некоторых #includes. Это прекрасно работает для меня:

#include <boost/fusion/include/at_key.hpp>
#include <boost/fusion/include/map.hpp>
#include <boost/fusion/include/pair.hpp>

struct A { };
struct B { };

int main()
{
boost::fusion::map<
boost::fusion::pair<
A,
boost::fusion::map<boost::fusion::pair<unsigned int, B>>
>
> map_;

B b = boost::fusion::at_key<unsigned int>(boost::fusion::at_key<A>(map_));
}

Демо онлайн

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]