summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2025-08-13 19:56:10 +0200
committerStanislaw Halik <sthalik@misaki.pl>2025-08-13 21:11:06 +0200
commit0602c4ce87299e495966b0126a7c6a7adf9721e3 (patch)
treec6d6f2d1c5edeb0c1a4a038a12bb5a15291e7510
parent7e85868471c1970a5d2aa7540c75490d8f8215d3 (diff)
compat: fix clang compile-time error
Add test.
-rw-r--r--compat/array-size.hpp2
-rw-r--r--test/util.cpp5
2 files changed, 6 insertions, 1 deletions
diff --git a/compat/array-size.hpp b/compat/array-size.hpp
index fd313e6e..98da4d1e 100644
--- a/compat/array-size.hpp
+++ b/compat/array-size.hpp
@@ -9,9 +9,9 @@ template<typename T, size_t N> struct array_size_<T(*)[N]> : std::integral_const
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> {};
-template<size_t N, class T, class U> constexpr std::size_t arraySize(U(T::*)[N]) { return N; }
template<typename C, typename T> struct array_size_<T C::*> : std::integral_constant<size_t, array_size_<std::remove_cvref_t<T>>::value> {};
+//template<typename T, typename U, size_t N> struct array_size_< T(U::*)[N] > : std::integral_constant<size_t, N> {}; // should be redundant
} // namespace floormat::detail
diff --git a/test/util.cpp b/test/util.cpp
index 48332621..e250b072 100644
--- a/test/util.cpp
+++ b/test/util.cpp
@@ -11,6 +11,7 @@ struct Foo
static constexpr const void* Array_2[22] = {};
std::array<int, 33> array_3;
+ int array_4[55] = {};
};
constexpr bool test_array_size()
@@ -27,6 +28,10 @@ constexpr bool test_array_size()
fm_assert(static_array_size<const int(&)[44]> == 44);
+ fm_assert(static_array_size<decltype(Foo::array_4)> == 55);
+ fm_assert(array_size(&Foo::array_4) == 55);
+ fm_assert(array_size(Foo{}.array_4) == 55);
+
return true;
}