We should be using standard algorithms where possible.

Use of algorithms in the STL should be promoted where possible.
Also fixed up some whitespace issues.
This commit is contained in:
Kern Handa 2015-09-25 17:01:29 -07:00
parent b40d3466c6
commit c4f9b87d96

View File

@ -28,6 +28,7 @@
#include <utility> #include <utility>
#include <array> #include <array>
#include <iterator> #include <iterator>
#include <algorithm>
#include "fail_fast.h" #include "fail_fast.h"
#ifndef _MSC_VER #ifndef _MSC_VER
@ -142,12 +143,7 @@ namespace details
} }
_CONSTEXPR bool operator==(const ConcreteType& rhs) const _NOEXCEPT _CONSTEXPR bool operator==(const ConcreteType& rhs) const _NOEXCEPT
{ {
for (unsigned int i = 0; i < rank; ++i) return std::equal(elems, elems + rank, rhs.elems);
{
if (elems[i] != rhs.elems[i])
return false;
}
return true;
} }
_CONSTEXPR bool operator!=(const ConcreteType& rhs) const _NOEXCEPT _CONSTEXPR bool operator!=(const ConcreteType& rhs) const _NOEXCEPT
{ {
@ -160,8 +156,7 @@ namespace details
_CONSTEXPR ConcreteType operator-() const _CONSTEXPR ConcreteType operator-() const
{ {
ConcreteType ret = to_concrete(); ConcreteType ret = to_concrete();
for (unsigned int i = 0; i < rank; ++i) std::transform(ret, ret + rank, ret, std::negate<ValueType>{});
ret.elems[i] = -ret.elems[i];
return ret; return ret;
} }
_CONSTEXPR ConcreteType operator+(const ConcreteType& rhs) const _CONSTEXPR ConcreteType operator+(const ConcreteType& rhs) const