blob: 6832d1760578344d04230ebd62fe0fa4c228a55f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
// { dg-do assemble }
// Origin: Neil Booth, from bug report #36
template <typename t> class vect;
template <typename t> vect<t> operator-( const vect<t>&, const vect<t>& );
template <typename t>
class vect
{
public:
vect( t a );
vect( const vect<t>& v );
~vect();
vect<t>& operator=( const vect<t>& v );
vect<t> operator-( void ) const;
friend vect<t> (::operator- <>)( const vect<t>&, const vect<t>& );
private:
t a_;
};
template <typename t> inline
vect<t>::vect( t a )
: a_(a)
{
}
template <typename t> inline
vect<t>::vect( const vect<t>& v )
: a_(v.a_)
{
}
template <typename t> inline
vect<t>::~vect()
{
}
template <typename t> inline vect<t>&
vect<t>::operator=( const vect<t>& v )
{
a_ = v.a_;
return *this;
}
template <typename t> inline vect<t>
vect<t>::operator-( void ) const
{
return vect<t>( -a_ );
}
template <typename t> inline vect<t>
operator-( const vect<t>& u, const vect<t>& v )
{
return vect<t>( u.a_ - v.a_ );
}
int
main( void )
{
vect<double> a( 1.0 ), b( 0.0 );
b = -a;
}
|