mirror of
https://github.com/boostorg/core.git
synced 2025-11-28 13:29:19 +01:00
@@ -23,9 +23,17 @@ class span;
|
||||
|
||||
namespace detail {
|
||||
|
||||
template<class U, class T, class = void>
|
||||
struct span_convertible
|
||||
{
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
template<class U, class T>
|
||||
struct span_convertible {
|
||||
static constexpr bool value = std::is_convertible<U(*)[], T(*)[]>::value;
|
||||
struct span_convertible<U, T, typename std::enable_if<
|
||||
std::is_convertible<U(*)[], T(*)[]>::value>::type>
|
||||
{
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
template<std::size_t E, std::size_t N>
|
||||
|
||||
@@ -25,6 +25,20 @@ struct range {
|
||||
}
|
||||
};
|
||||
|
||||
struct buffer {
|
||||
void* data() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
const void* data() const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::size_t size() const {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
struct base { };
|
||||
|
||||
struct derived
|
||||
@@ -138,6 +152,10 @@ void test_range()
|
||||
const range<int>&>));
|
||||
BOOST_TEST_TRAIT_FALSE((std::is_constructible<boost::span<base>,
|
||||
range<derived>&>));
|
||||
BOOST_TEST_TRAIT_FALSE((std::is_constructible<boost::span<int>,
|
||||
buffer>));
|
||||
BOOST_TEST_TRAIT_FALSE((std::is_constructible<boost::span<int>,
|
||||
const buffer&>));
|
||||
}
|
||||
|
||||
void test_initializer_list()
|
||||
|
||||
Reference in New Issue
Block a user