complex_promote.h
1//-*-C++-*-
2/***************************************************************************
3 *
4 * Copyright (C) 2004 by Willem van Straten
5 * Licensed under the Academic Free License version 2.1
6 *
7 ***************************************************************************/
8
9// epsic/src/util/complex_promote.h
10
11#ifndef __complex_promote_H
12#define __complex_promote_H
13
14#include <complex>
15#include "PromoteTraits.h"
16
17#ifdef PROMOTE_TRAITS_SPECIALIZE
18
19template <class T, class U>
20class PromoteTraits< std::complex<T>, std::complex<U> >
21{
22 public:
23 typedef std::complex<typename PromoteTraits<T,U>::promote_type>
24 promote_type;
25};
26
27#endif
28
30template<typename T, typename U>
31const std::complex<typename PromoteTraits<T,U>::promote_type>
32operator + (const std::complex<T>& a, const std::complex<U>& b)
33{
34 std::complex<typename PromoteTraits<T,U>::promote_type> ret(a);
35 ret+=b;
36 return ret;
37}
38
40template<typename T, typename U>
41const std::complex<typename PromoteTraits<T,U>::promote_type>
42operator - (const std::complex<T>& a, const std::complex<U>& b)
43{
44 std::complex<typename PromoteTraits<T,U>::promote_type> ret(a);
45 ret-=b;
46 return ret;
47}
48
50template<typename T, typename U>
51const std::complex<typename PromoteTraits<T,U>::promote_type>
52operator * (const std::complex<T>& a, const std::complex<U>& b)
53{
54 std::complex<typename PromoteTraits<T,U>::promote_type> ret(a);
55 ret*=b;
56 return ret;
57}
58
59#endif
60
STL namespace.

Generated using doxygen 1.14.0