initiailizer list now works for dynamic spans

v2
Brett 2024-11-08 19:22:06 -05:00
parent f7ef78f351
commit 7bf24a11a5
2 changed files with 16 additions and 12 deletions

View File

@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.20)
include(cmake/color.cmake)
set(BLT_VERSION 2.1.6)
set(BLT_VERSION 2.1.7)
set(BLT_TARGET BLT)

View File

@ -227,14 +227,14 @@ namespace blt
constexpr span(const R& range): size_(std::size(range)), data_(range.data()) // NOLINT
{}
template<size_type SIZE, typename std::enable_if_t<
template<blt::size_t SIZE, typename std::enable_if_t<
extent != dynamic_extent && SIZE == extent && std::is_const_v<element_type>, bool> = true>
explicit constexpr span(std::initializer_list<value_type> il) noexcept: size_(il.size()), data_(&il.begin()) // NOLINT
{}
template<size_type SIZE, typename std::enable_if_t<
extent == dynamic_extent && SIZE == extent && std::is_const_v<element_type>, bool> = true>
explicit span(std::initializer_list<value_type> il) noexcept: size_(il.size()), data_(&il.begin()) // NOLINT
// template<blt::size_t SIZE, typename std::enable_if_t<
// extent == dynamic_extent && SIZE == extent && std::is_const_v<pointer>, bool> = true>
span(std::initializer_list<T> il) noexcept: size_(il.size()), data_(std::data(il)) // NOLINT
{}
template<class U, std::size_t N, typename std::enable_if_t<
@ -358,23 +358,27 @@ namespace blt
};
template<class T, std::size_t N>
template<typename T, std::size_t N>
span(T (&)[N]) -> span<T, N>;
template<class T, std::size_t N>
template<typename T, std::size_t N>
span(const T (&)[N]) -> span<T, N>;
template<class T, std::size_t N>
template<typename T, std::size_t N>
span(std::array<T, N>&) -> span<T, N>;
template<class T, std::size_t N>
template<typename T, std::size_t N>
span(const std::array<T, N>&) -> span<const T, N>;
template<class Cont>
template<typename Cont>
span(Cont&) -> span<typename Cont::value_type>;
template<class Cont>
template<typename Cont>
span(const Cont&) -> span<const typename Cont::value_type>;
template<typename T>
span(std::initializer_list<T>) -> span<const T>;
}
#endif //BLT_RANGES_H