1class test
2{
3public:
4 float operator[]( int index )
5 {
6  return testFloat[index];
7 }
8private:
9 float testFloat[3];
10};
11
12template < class typeA > float
13operator*(
14 typeA a,
15 float b
16)
17{
18 return a[0] * b;
19}
20
21template < class typeB > float
22operator*(
23 float a,
24 typeB b
25)
26{
27 return a * b[0];
28}
29
30template < class typeA, class typeB > float
31operator*(
32 typeA a,
33 typeB b
34)
35{
36 return a[0] * b[0];
37}
38
39int main( void )
40{
41 test aTest;
42 float bTest;
43 float result;
44
45 result = aTest * bTest;
46 result = bTest * aTest;
47
48 return 0;
49}
50