20#ifndef FENNEC_MATH_VECTOR_BASE_H
21#define FENNEC_MATH_VECTOR_BASE_H
23#include <fennec/math/detail/_fwd.h>
26#include <fennec/math/vector_storage.h>
30namespace fennec::detail
37template<
typename scalar,
size_t size>
38struct vector_base_type_helper
43 inline static constexpr size_t SizeV = size;
48 using ScalarT = scalar;
52 using VectorT = vec<ScalarT, SizeV>;
56 using DataT = array<ScalarT, SizeV>;
61 template<
size_t...IndicesV>
struct SwizzleGen
64 using type = swizzle<VectorT, DataT, ScalarT, IndicesV...>;
68 template<
size_t IndexV>
struct SwizzleGen<IndexV>
76 using StorageT = vector_storage<SizeV, SwizzleGen, DataT>;
81template<
typename ScalarT,
size_t SizeV>
82using vector_base_type =
typename vector_base_type_helper<ScalarT, SizeV>::StorageT;
A header containing the definition for a static/stack allocated array.