| // { dg-do compile { target c++11 } } |
| template<int I> |
| struct accept_evens { |
| static_assert( I % 2 == 0, "I must be an even number"); // { dg-error "even number" } |
| }; |
| |
| template<int I> |
| struct accept_evens_ok { |
| static_assert( I % 2 == 0, "I must be an even number"); |
| }; |
| |
| template<int I> |
| void accept_odds() { |
| static_assert( I % 2 == 1, "I must be an odd number"); // { dg-error "odd number" } |
| } |
| |
| template<int I> |
| void accept_odds_ok() { |
| static_assert( I % 2 == 1, "I must be an odd number"); |
| } |
| |
| void f() |
| { |
| accept_odds<1>(); |
| accept_odds<2>(); |
| accept_odds<3>(); |
| accept_odds_ok<5>(); |
| accept_odds_ok<7>(); |
| } |
| |
| accept_evens<0> ok0; |
| accept_evens<1> error1; |
| accept_evens<2> ok2; |
| accept_evens_ok<4> ok4; |
| accept_evens_ok<6> ok6; |