It's hard to say if the presented code isn't want you're actually using and it's unclear if it would even reproduce the issue.
The behavior here sounds similar to the white square problem, but that usually arises when using textures in a std::vector.
It's important to realize that
std::vector will automatically relocate all its items from one memory location to another memory location when adding new items. So what you're likely notice is that between 5 and 7 elements, the vector moves all the items to a new memory location and thus breaks some references/pointers.
As a test, you could reserve() the right amount elements, thus pre-allocating enough space and guaranteeing that the items don't need to be moved. Alternatively, you might consider a stable container or a std::unique_ptr.
std::unordered_map<std::string, std::unique_ptr<sf::Texture>> textures_;
// ...
textures_[_path] = std::make_unique<sf::Texture>(_path);
std::unordered_map is already a stable container and you don't really need a
unique_ptr here, if you're going to return raw pointers anyways.
You can then just
emplace the texture:
textures_.emplace(_path, _path)