diff options
Diffstat (limited to 'compat')
| -rw-r--r-- | compat/array-size.hpp | 19 | ||||
| -rw-r--r-- | compat/function2.hpp | 2 |
2 files changed, 20 insertions, 1 deletions
diff --git a/compat/array-size.hpp b/compat/array-size.hpp new file mode 100644 index 00000000..ca545898 --- /dev/null +++ b/compat/array-size.hpp @@ -0,0 +1,19 @@ +#pragma once +#include <array> + +namespace floormat::detail { + +template<typename T> struct array_size_; // todo! replace usages of arraySize & std::size +template<typename T, size_t N> struct array_size_<T(&)[N]> : std::integral_constant<size_t, N> {}; +template<typename T, size_t N> struct array_size_<T[N]> : std::integral_constant<size_t, N> {}; +template<typename T, size_t N> struct array_size_<std::array<T, N>> : std::integral_constant<size_t, N> {}; +template<typename T, size_t N> struct array_size_<StaticArray<N, T>> : std::integral_constant<size_t, N> {}; + +} // namespace floormat::detail + +namespace floormat { + +template<typename T> constexpr inline size_t static_array_size = detail::array_size_<T>::value; +template<typename T> constexpr inline size_t array_size(const T&) noexcept { return detail::array_size_<T>::value; } + +} // namespace floormat diff --git a/compat/function2.hpp b/compat/function2.hpp index cd23bad9..54f00111 100644 --- a/compat/function2.hpp +++ b/compat/function2.hpp @@ -17,7 +17,7 @@ #define FU2_WITH_NO_FUNCTIONAL_HEADER #include <cassert> #include <cstddef> -//#include <cstdlib> +#include <cstdlib> #include <memory> #include <tuple> #include <type_traits> |
