firstとの代わりに意味のあるフィールド名を使用できるように、独自の構造体を定義する方が常に良いというのが私の印象ですsecond。
標準で使用される場所の 1 つは、 のstd::pair要素にアクセスするためですstd::map。firstがキーでありsecond、値です。key_value_pair特定のテンプレートを用意して、そのフィールドをkeyandvalueではなくfirstandとして参照する方がはるかによいのではないでしょうsecondか? 私には、無料でコードがかなり読みやすくなるように思えます。