1 /* Copyright Bruno da Silva de Oliveira 2003. Use, modification and
2  distribution is subject to the Boost Software License, Version 1.0.
3  (See accompanying file LICENSE_1_0.txt or copy at
4  http://www.boost.org/LICENSE_1_0.txt)
5  */
6 #ifndef OPERATORS_H
7 #define OPERATORS_H
8 
9 
10 namespace operators {
11 
12 struct C
13 {
14     static double x;
15     double value;
16 
17     const C operator+(const C other) const
18     {
19         C c;
20         c.value = value + other.value;
21         return c;
22     }
23     operator int() const
24     {
25         return (int)value;
26     }
27 
operatorC28     double operator()()
29     {
30         return C::x;
31     }
32 
operatorC33     double operator()(double other)
34     {
35         return C::x + other;
36     }
37 
38     operator const char*() { return "C"; }
39 };
40 
41 inline const C operator*(const C& lhs, const C& rhs)
42 {
43     C c;
44     c.value = lhs.value * rhs.value;
45     return c;
46 }
47 
48 
49 }
50 
51 
52 #endif
53