#ifndef __CPP_PAIR_H
#define __CPP_PAIR_H

#ifdef __cplusplus

#include <ubixos/types.h>

template <class A, class B> class Pair
{
    protected:
	A a;
	B b;

    public:
	Pair() : a(), b() { };
	Pair(const A & _a, const B & _b) : a(_a), b(_b) { };

	~Pair() { };

	inline A & first() { return a; };
	inline B & second() { return b; };

	Pair & operator= (const Pair & right) {
	    this->first() = right.a;
	    this->second() = right.b;

	    return *this;
	}
    
	operator B() const
	{
	    return b;
	}
};


	
#endif
	
#endif	
