// 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