#pragma once #include "FastSIMD.h" namespace FastSIMD { template struct SIMDTypeContainer { static constexpr eLevel MinimumCompiled = Level_Null; template static constexpr eLevel GetNextCompiledAfter = Level_Null; }; template struct SIMDTypeContainer { static constexpr eLevel MinimumCompiled = (HEAD & COMPILED_SIMD_LEVELS) != 0 ? HEAD : SIMDTypeContainer::MinimumCompiled; template static constexpr eLevel GetNextCompiledAfter = (L == HEAD) ? SIMDTypeContainer::MinimumCompiled : SIMDTypeContainer::template GetNextCompiledAfter; }; using SIMDTypeList = SIMDTypeContainer< Level_Scalar, Level_SSE, Level_SSE2, Level_SSE3, Level_SSSE3, Level_SSE41, Level_SSE42, Level_AVX, Level_AVX2, Level_AVX512, Level_NEON>; }