1 // Test non-type template argument folding.
2 // Origin: smacdonald@seimac.com
3
4 // { dg-do compile }
5
6 template < int I1, int I2 >
7 class unit
8 {
9 public:
unit()10 unit() {}
unit(const unit<I1,I2> &)11 unit( const unit<I1,I2>& ) {}
12
13 template< int Q1, int Q2 >
14 unit< I1 - Q1, I2 - Q2 > operator / ( const unit< Q1, Q2 >& rhs ) const {
15 return unit< I1 - Q1, I2 - Q2 >();
16 }
17
18 };
19
main()20 int main()
21 {
22 const unit<1,0> u1;
23 const unit<2,0> u2;
24
25 unit<-1,0> u3( u1 / u2 );
26 }
27