# containers/foursome.hpp

    #ifndef STLPLUS_FOURSOME
    #define STLPLUS_FOURSOME
    ////////////////////////////////////////////////////////////////////////////////

    //   Author:    Andy Rushton, from an original by Dan Milton
    //   Copyright: (c) Southampton University 1999-2004
    //              (c) Andy Rushton           2004 onwards
    //   License:   BSD License, see ../docs/license.html

    //   The next in the series pair->triple->foursome

    //   Originally called quadruple but that clashed (as did quad) with system
    //   libraries on some operating systems

    ////////////////////////////////////////////////////////////////////////////////
    #include "containers_fixes.hpp"

    namespace stlplus
    {

      ////////////////////////////////////////////////////////////////////////////////
      // the foursome class

      template<typename T1, typename T2, typename T3, typename T4>
      struct foursome
      {
        typedef T1 first_type;
        typedef T2 second_type;
        typedef T3 third_type;
        typedef T4 fourth_type;

        T1 first;
        T2 second;
        T3 third;
        T4 fourth;

        foursome(void);
        foursome(const T1& p1, const T2& p2, const T3& p3, const T4& p4);
        foursome(const foursome<T1,T2,T3,T4>& t2);
      };

      ////////////////////////////////////////////////////////////////////////////////
      // creation

      template<typename T1, typename T2, typename T3, typename T4>
      foursome<T1,T2,T3,T4> make_foursome(const T1& first, const T2& second, const T3& third, const T4& fourth);

      ////////////////////////////////////////////////////////////////////////////////
      // comparison

      template<typename T1, typename T2, typename T3, typename T4>
      bool operator == (const foursome<T1,T2,T3,T4>& left, const foursome<T1,T2,T3,T4>& right);
      template<typename T1, typename T2, typename T3, typename T4>
      bool operator < (const foursome<T1,T2,T3,T4>& left, const foursome<T1,T2,T3,T4>& right);

      ////////////////////////////////////////////////////////////////////////////////

    } // end namespace stlplus

    #include "foursome.tpp"
    #endif