1217309Snwhitehorn// Build don't link: 2251843Sbapt// Origin: Neil Booth, from bug report #36 3217309Snwhitehorn 4217309Snwhitehorntemplate <typename t> class vect; 5217309Snwhitehorntemplate <typename t> vect<t> operator-( const vect<t>&, const vect<t>& ); 6251843Sbapt 7217309Snwhitehorntemplate <typename t> 8217309Snwhitehornclass vect 9217309Snwhitehorn{ 10217309Snwhitehornpublic: 11217309Snwhitehorn vect( t a ); 12217309Snwhitehorn 13217309Snwhitehorn vect( const vect<t>& v ); 14217309Snwhitehorn ~vect(); 15217309Snwhitehorn 16217309Snwhitehorn vect<t>& operator=( const vect<t>& v ); 17217309Snwhitehorn vect<t> operator-( void ) const; 18217309Snwhitehorn friend vect<t> operator- <>( const vect<t>&, const vect<t>& ); 19217309Snwhitehorn 20217309Snwhitehornprivate: 21217309Snwhitehorn t a_; 22217309Snwhitehorn}; 23217309Snwhitehorn 24217309Snwhitehorntemplate <typename t> inline 25217309Snwhitehornvect<t>::vect( t a ) 26217309Snwhitehorn: a_(a) 27217309Snwhitehorn{ 28217309Snwhitehorn} 29217309Snwhitehorn 30217309Snwhitehorntemplate <typename t> inline 31217309Snwhitehornvect<t>::vect( const vect<t>& v ) 32217309Snwhitehorn: a_(v.a_) 33217309Snwhitehorn{ 34217309Snwhitehorn} 35217309Snwhitehorn 36217309Snwhitehorntemplate <typename t> inline 37217309Snwhitehornvect<t>::~vect() 38217309Snwhitehorn{ 39217309Snwhitehorn} 40217309Snwhitehorn 41217309Snwhitehorntemplate <typename t> inline vect<t>& 42217309Snwhitehornvect<t>::operator=( const vect<t>& v ) 43217309Snwhitehorn{ 44217309Snwhitehorn a_ = v.a_; 45217309Snwhitehorn return *this; 46217309Snwhitehorn} 47217309Snwhitehorn 48217309Snwhitehorntemplate <typename t> inline vect<t> 49217309Snwhitehornvect<t>::operator-( void ) const 50217309Snwhitehorn{ 51217309Snwhitehorn return vect<t>( -a_ ); 52217309Snwhitehorn} 53217309Snwhitehorn 54217309Snwhitehorntemplate <typename t> inline vect<t> 55217309Snwhitehornoperator-( const vect<t>& u, const vect<t>& v ) 56217309Snwhitehorn{ 57217309Snwhitehorn return vect<t>( u.a_ - v.a_ ); 58217309Snwhitehorn} 59217309Snwhitehorn 60217309Snwhitehornint 61217309Snwhitehornmain( void ) 62217309Snwhitehorn{ 63217309Snwhitehorn vect<double> a( 1.0 ), b( 0.0 ); 64217309Snwhitehorn b = -a; 65217309Snwhitehorn} 66217309Snwhitehorn