Why would this cause a latch?
The always block is evaluated every time i_S or i_V changes. You haven't specified what the value of o_R should be when i_S is false, so the simulator and synthesizer assume that you just want to retain the old value of o_R in this case. Therefore, a latch is inserted.

The terms latch and flip-flop are not standardized, but most people use latch to mean a level-sensitive bistable element while a flip-flop is an edge-sensitive bistable element. They are not the same.