I'm not sure if you're familiar with templates but here's the definition:
template<typename T >
Vector2< T > operator/ (const Vector2< T > & left, T right)
So as you can see if you call
sf::Vector2f which is a typedef for
sf::Vector2<float> you're setting the
T from the template abvoe to
float so if you'd rewrite that you'd get:
Vector2<float> operator/ (const Vector2<float> & left, float right)
Now you're code is using a sf::Vector2<float> and a precise number, thus the compiler actually sees that you would want to call the non existing function:
Vector2<float> operator/ (const Vector2<float> & left, int right)
This on the other hand will work:
sf::Vector2f v(5.f, 5.f);
sf::Vector2f z = v/5.f;