diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2025-08-13 19:56:10 +0200 |
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2025-08-13 21:11:06 +0200 |
| commit | 0602c4ce87299e495966b0126a7c6a7adf9721e3 (patch) | |
| tree | c6d6f2d1c5edeb0c1a4a038a12bb5a15291e7510 | |
| parent | 7e85868471c1970a5d2aa7540c75490d8f8215d3 (diff) | |
compat: fix clang compile-time error
Add test.
| -rw-r--r-- | compat/array-size.hpp | 2 | ||||
| -rw-r--r-- | test/util.cpp | 5 |
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; } |
