// won't compile:
std::transform(m.begin(), m.end(), keys.begin(), boost::bind(&std::pair<std::string,Test>::first, _1));
Try adding a const to the key type: &std::pair<const std::string,Test>::first
I think the keys in a map are always returned const. Changing them could lead to unsorted maps and weird behaviour.
Regards,
Alex