This should do it, keeping the original
std::pair<int, int>
functionality:
struct MyPair : std::pair<int, int>
{
typedef std::pair<int, int> Pair;
int & something;
int & somethingelse;
MyPair() : something(Pair::first), somethingelse(Pair::second)
{}
MyPair(const Pair& pair) : Pair(pair), something(Pair::first), somethingelse(Pair::second)
{}
operator const Pair& () const
{
return *this;
}
};
Use it like the underlying
std::pair<int, int>
:
MyPair p1(std::make_pair(10, 20));
MyPair p2 = std::make_pair(-10, -20);
MyPair p3 = p2;
int val = p3.something + p1.something;
p2.somethingelse = 333;
cheers,
AR