| 229 | |
| 230 | template< typename InputIterator > |
| 231 | typename traits::enable_if< helpers::decays_to_ctype< typename std::iterator_traits< InputIterator >::value_type >::value, |
| 232 | typename helpers::ctype< typename std::iterator_traits< InputIterator >::value_type >::type >::type |
| 233 | sum_nona(InputIterator begin, InputIterator end) { |
| 234 | |
| 235 | typedef typename helpers::ctype< typename std::iterator_traits< InputIterator >::value_type >::type value_type; |
| 236 | typedef typename helpers::rtype< value_type > rtype; |
| 237 | |
| 238 | if (begin != end) { |
| 239 | value_type start = rtype::ZERO(); |
| 240 | |
| 241 | while (begin != end) { |
| 242 | start += *begin++; |
| 243 | } |
| 244 | |
| 245 | return start; |
| 246 | } |
| 247 | |
| 248 | return rtype::ZERO(); |
| 249 | } |
| 250 | |
| 251 | template< typename InputIterator > |
| 252 | typename traits::enable_if< helpers::decays_to_ctype< typename std::iterator_traits< InputIterator >::value_type >::value, |