| 321 | |
| 322 | template< typename InputIterator > |
| 323 | typename traits::enable_if< helpers::decays_to_ctype< typename std::iterator_traits< InputIterator >::value_type >::value, |
| 324 | typename helpers::ctype< typename std::iterator_traits< InputIterator >::value_type >::type >::type |
| 325 | max_nona(InputIterator begin, InputIterator end) { |
| 326 | |
| 327 | typedef typename helpers::ctype< typename std::iterator_traits< InputIterator >::value_type >::type value_type; |
| 328 | typedef typename helpers::rtype< value_type > rtype; |
| 329 | |
| 330 | if (begin != end) { |
| 331 | value_type max = *begin; |
| 332 | |
| 333 | while (begin != end) { |
| 334 | max = std::max(max, *begin++); |
| 335 | } |
| 336 | |
| 337 | return max; |
| 338 | } |
| 339 | |
| 340 | return std::numeric_limits< typename rtype::type >::infinity() * -rtype::ONE(); |
| 341 | } |
| 342 | |
| 343 | template< typename InputIterator > |
| 344 | typename traits::enable_if< helpers::decays_to_ctype< typename std::iterator_traits< InputIterator >::value_type >::value, |
no test coverage detected