#ifndef _NTPM_AI_ADD_H
#define _NTPM_AI_ADD_H

#include <arithmetic_iterators/ai_binary.h>

namespace NTPMai {


// handles addition of simple promises. returns a simple promise.
template <class T_IT1, class T_IT2>
typename BINOP_Deffer<Promise<T_IT1>, Promise<T_IT2>,
                      plus<Promise<T_IT1>::value_type> >::V
operator+(Promise<T_IT1> p1, Promise<T_IT2> p2)
{
    return make_binary_op_promise(p1, p2,
				  plus<Promise<T_IT1>::value_type>());
}


// handles subtraction of simple promises. returns a simple promise.
template <class T_IT1, class T_IT2>
typename BINOP_Deffer<Promise<T_IT1>,Promise<T_IT2>,
                      minus<Promise<T_IT1>::value_type> >::V
operator-(Promise<T_IT1> p1, Promise<T_IT2> p2)
{
    return make_binary_op_promise(p1, p2,
				  minus<Promise<T_IT1>::value_type>());
}


}

#endif // _NTPM_AI_ADD_H
