std::pair comes with a number of constructors and operators.
A struct allow named fields (other than first and second) and is ready to be extended at any time.
Prefer a struct when you can. It may involve some overhead, but is definitely easier for maintenance.