...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::compressed_pair
// In header: <boost/detail/compressed_pair.hpp> template<typename T1, typename T2> class compressed_pair { public: // types typedef T1 first_type; typedef T2 second_type; typedef call_traits< first_type >::param_type first_param_type; typedef call_traits< second_type >::param_type second_param_type; typedef call_traits< first_type >::reference first_reference; typedef call_traits< second_type >::reference second_reference; typedef call_traits< first_type >::const_reference first_const_reference; typedef call_traits< second_type >::const_reference second_const_reference; // construct/copy/destruct compressed_pair(); compressed_pair(first_param_type, second_param_type); explicit compressed_pair(first_param_type); explicit compressed_pair(second_param_type); // public member functions first_reference first(); first_const_reference first() const; second_reference second(); second_const_reference second() const; void swap(compressed_pair &); };
compressed_pair
public member functionsfirst_reference first();
first_const_reference first() const;
second_reference second();
second_const_reference second() const;
void swap(compressed_pair & y);