diff options
Diffstat (limited to 'src/Math/Tensor.hpp')
| -rw-r--r-- | src/Math/Tensor.hpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/Math/Tensor.hpp b/src/Math/Tensor.hpp index e373c1f..95c4548 100644 --- a/src/Math/Tensor.hpp +++ b/src/Math/Tensor.hpp @@ -1,14 +1,14 @@ #pragma once -template<size_t O, typename T, size_t ...S> +template<uint O, typename T, uint ...S> struct Tensor { - static constexpr size_t element_size = (S*...); + static constexpr USize element_size = (S*...); template<typename ...Args> - using EnableArgs = std::enable_if_t<sizeof...(Args) == O, bool>; + using EnableArgs = std::enable_if_t<sizeof...(Args) == O, Bool>; template<typename ...Args> - using EnableArgsPerElement = std::enable_if_t<sizeof...(Args) == element_size, bool>; - using Enable = std::enable_if_t<sizeof...(S) == O, bool>; + using EnableArgsPerElement = std::enable_if_t<sizeof...(Args) == element_size, Bool>; + using Enable = std::enable_if_t<sizeof...(S) == O, Bool>; template<Enable = true> Tensor() : elements{} {} @@ -19,7 +19,7 @@ struct Tensor { } template<Enable = true, typename ...Args, EnableArgsPerElement<Args...> = true> - Tensor(Args... args) : elements{ args... } {} + Tensor(Args... args) : elements{ static_cast<T>(args)... } {} template<typename ...Args, EnableArgs<Args...> = true> auto& operator()(Args... args) { @@ -27,12 +27,12 @@ struct Tensor { } template<typename ...Args, EnableArgs<Args...> = true> - static constexpr size_t pos(Args... args) { - size_t positions[O] = {static_cast<size_t>(args)...}; - size_t dimensions[O] = {S...}; + static constexpr USize pos(Args... args) { + USize positions[O] = {static_cast<USize>(args)...}; + USize dimensions[O] = {S...}; - size_t p = 0; - for (int i = 0; i < O; i++) { + USize p = 0; + for (Int i = 0; i < O; i++) { p *= dimensions[i]; p += positions[i]; } |
