https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69600
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- The value_type of your map is pair<const std::string, inner_data_t> an you can't move the first part of that pair, and you can't copy the second part of that pair, so you can't move or copy it.