Ошибка исходит из:
std::make_pair(ABC.a,ABC);
Поскольку C ++ 11, make_pair
определяется как:
template< class T1, class T2 >
std::pair<V1,V2> make_pair( T1&& t, T2&& u );
, что дает его ABC.a
поскольку первый аргумент пытается привязать ссылку lvalue к битовому полю (что в основном представляет собой упакованная структура), , что недопустимо .
Чтобы решить это, выдолжен создать fresh unsigned int и вызвать make_pair
с ним:
unsigned int a = ABC.a;
Mapp.insert(std::make_pair(a,ABC));