initiailizer list now works for dynamic spans
parent
f7ef78f351
commit
7bf24a11a5
|
@ -1,6 +1,6 @@
|
||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
include(cmake/color.cmake)
|
include(cmake/color.cmake)
|
||||||
set(BLT_VERSION 2.1.6)
|
set(BLT_VERSION 2.1.7)
|
||||||
|
|
||||||
set(BLT_TARGET BLT)
|
set(BLT_TARGET BLT)
|
||||||
|
|
||||||
|
|
|
@ -227,14 +227,14 @@ namespace blt
|
||||||
constexpr span(const R& range): size_(std::size(range)), data_(range.data()) // NOLINT
|
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>
|
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
|
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<
|
// template<blt::size_t SIZE, typename std::enable_if_t<
|
||||||
extent == dynamic_extent && SIZE == extent && std::is_const_v<element_type>, bool> = true>
|
// extent == dynamic_extent && SIZE == extent && std::is_const_v<pointer>, bool> = true>
|
||||||
explicit span(std::initializer_list<value_type> il) noexcept: size_(il.size()), data_(&il.begin()) // NOLINT
|
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<
|
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>;
|
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>;
|
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>;
|
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>;
|
span(const std::array<T, N>&) -> span<const T, N>;
|
||||||
|
|
||||||
template<class Cont>
|
template<typename Cont>
|
||||||
span(Cont&) -> span<typename Cont::value_type>;
|
span(Cont&) -> span<typename Cont::value_type>;
|
||||||
|
|
||||||
template<class Cont>
|
template<typename Cont>
|
||||||
span(const Cont&) -> span<const typename Cont::value_type>;
|
span(const Cont&) -> span<const typename Cont::value_type>;
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
span(std::initializer_list<T>) -> span<const T>;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif //BLT_RANGES_H
|
#endif //BLT_RANGES_H
|
||||||
|
|
Loading…
Reference in New Issue