Problem is that swap() is declared as private in the base class, associative_base. Testcase: cat /in/map.cc #include <map> int main(void) { std::map<int, void *> a, b; a.swap(b); } gives: # g++-uc map.cc map.cc: In function `int main()': /usr/lib/gcc/i386-gentoo-linux-uclibc/3.4.6/../../../../i386-gentoo-linux-uclibc/include/associative_base:448: error: `void std::__base_associative<Key, ValueType, Compare, Allocator>::swap(std::__base_associative<Key, ValueType, Compare, Allocator>&) [with Key = int, ValueType = std::pair<int, void*>, Compare = std::less<int>, Allocator = std::allocator<void*>]' is protected map.cc:5: error: within this context /usr/lib/gcc/i386-gentoo-linux-uclibc/3.4.6/../../../../i386-gentoo-linux-uclibc/include/string: At global scope: /usr/lib/gcc/i386-gentoo-linux-uclibc/3.4.6/../../../../i386-gentoo-linux-uclibc/include/string:104: warning: inline function `std::basic_string<Ch, Tr, A>::~basic_string() [with Ch = char, Tr = std::char_traits<char>, A = std::allocator<char>]' used but never defined
Created attachment 146466 [details, diff] associative_base.diff i dont know if this is the proper fix. Might be it is possible to redeclare swap as public in the map template/class. I'm not a c++ hacker. Patch is sent upstream to uclibc++ maintainer.
Removed from tree (see bug 276246).