9#ifndef DRYCHEM_COMMON_UTILITIES_INCLUDE_COMMON_UTILS_MATH_CONTAINERS_VECTOR3D_HPP
10#define DRYCHEM_COMMON_UTILITIES_INCLUDE_COMMON_UTILS_MATH_CONTAINERS_VECTOR3D_HPP
32 template<
typename T,
typename = std::enable_if_t<std::is_default_constructible_v<T>>>
40 using reference =
typename std::array<T, 3>::reference;
42 using pointer =
typename std::array<T, 3>::pointer;
44 using iterator =
typename std::array<T, 3>::iterator;
56 constexpr
Vector3D(T x_, T y_, T z_) noexcept :
data {{x_, y_, z_}} {}
80 constexpr bool empty() const noexcept {
return false; }
92 template<std::
size_t Index,
typename T>
95 static_assert(Index < 3,
"Index must be within 0 and 2, inclusive.");
97 if constexpr (Index == 0)
99 else if constexpr (Index == 1)
108 template<std::
size_t Index,
typename T>
111 static_assert(Index < 3,
"Index must be within 0 and 2, inclusive.");
113 if constexpr (Index == 0)
115 else if constexpr (Index == 1)
124 template<std::
size_t Index,
typename T>
127 static_assert(Index < 3,
"Index must be within 0 and 2, inclusive.");
129 if constexpr (Index == 0)
130 return std::move(vec[0]);
131 else if constexpr (Index == 1)
132 return std::move(vec[1]);
134 return std::move(vec[2]);
146template<std::
size_t Index,
typename T>
147struct std::tuple_element<Index,
CppUtils::Math::Vector3D<T>>
Definition vector3D.hpp:34
constexpr iterator begin() noexcept
Iterators - reuse the definitions from the internal array.
Definition vector3D.hpp:71
constexpr void swap(Vector3D< T > &other_)
Definition vector3D.hpp:86
constexpr const_iterator cend() const noexcept
Definition vector3D.hpp:77
std::size_t size_type
Definition vector3D.hpp:38
std::ptrdiff_t difference_type
Definition vector3D.hpp:39
constexpr const_reference operator[](size_type pos_) const noexcept
Definition vector3D.hpp:68
typename std::array< T, 3 >::reference reference
Definition vector3D.hpp:40
constexpr const_reference at(size_type pos_) const
Could throw: array::at.
Definition vector3D.hpp:65
typename std::array< T, 3 >::pointer pointer
Definition vector3D.hpp:42
constexpr Vector3D(const container_type &data_) noexcept
Definition vector3D.hpp:57
constexpr bool empty() const noexcept
Capacity - these are fixed due to our definition of the internal array.
Definition vector3D.hpp:80
std::array< T, 3 > data
Definition vector3D.hpp:51
constexpr size_type max_size() const noexcept
Definition vector3D.hpp:82
constexpr Vector3D() noexcept=default
Constructors.
typename std::array< T, 3 >::iterator iterator
Definition vector3D.hpp:44
typename std::array< T, 3 >::const_pointer const_pointer
Definition vector3D.hpp:43
constexpr const_iterator cbegin() const noexcept
Definition vector3D.hpp:73
constexpr const_iterator end() const noexcept
Definition vector3D.hpp:76
constexpr friend bool operator<(const Vector3D< T > &lhs_, const Vector3D< T > &rhs_)
Definition vector3D.hpp:61
constexpr const_iterator begin() const noexcept
Definition vector3D.hpp:72
constexpr friend bool operator==(const Vector3D< T > &lhs_, const Vector3D< T > &rhs_)
Comparison operators - reuse the definitions from the internal array.
Definition vector3D.hpp:60
constexpr size_type size() const noexcept
Definition vector3D.hpp:81
typename std::array< T, 3 >::const_reference const_reference
Definition vector3D.hpp:41
constexpr reference at(size_type pos_)
Element access - reuse the definitions from the internal array.
Definition vector3D.hpp:64
constexpr iterator end() noexcept
Definition vector3D.hpp:75
std::array< T, 3 > container_type
With this member type, we are now both a container and container adapter.
Definition vector3D.hpp:48
typename std::array< T, 3 >::const_iterator const_iterator
Definition vector3D.hpp:45
constexpr reference operator[](size_type pos_) noexcept
Could throw: array::at.
Definition vector3D.hpp:67
constexpr void fill(const_reference value_)
Operations - reuse the definitions from the internal array.
Definition vector3D.hpp:85
T value_type
Member types.
Definition vector3D.hpp:37
Definition comparisonOperators.hpp:55
Definition backwardsDifferenceMethod.hpp:20
decltype(auto) get(Vector3D< T > &vec)
Definition vector3D.hpp:93
Definition fatalException.hpp:20
T type
Definition vector3D.hpp:149
static constexpr int value
Definition vector3D.hpp:143