mirror of
https://github.com/boostorg/parser.git
synced 2026-01-19 04:22:13 +00:00
Extend all_t test to test arrays; fix errors.
This commit is contained in:
@@ -19,8 +19,8 @@ namespace boost::parser::detail::text::detail {
|
||||
|
||||
template<typename T>
|
||||
using iterator_ = decltype(text::detail::begin(std::declval<T &>()));
|
||||
template<typename Range>
|
||||
using sentinel_ = decltype(text::detail::end(std::declval<Range>()));
|
||||
template<typename T>
|
||||
using sentinel_ = decltype(text::detail::end(std::declval<T &>()));
|
||||
|
||||
template<typename T>
|
||||
constexpr bool range_ =
|
||||
|
||||
@@ -1009,7 +1009,7 @@ namespace boost { namespace parser {
|
||||
decltype(detail::text::detail::begin(std::declval<T &>()));
|
||||
template<typename Range>
|
||||
using sentinel_t =
|
||||
decltype(detail::text::detail::end(std::declval<Range>()));
|
||||
decltype(detail::text::detail::end(std::declval<Range &>()));
|
||||
template<typename T>
|
||||
using iter_value_t = typename std::iterator_traits<T>::value_type;
|
||||
template<typename T>
|
||||
|
||||
@@ -61,3 +61,44 @@ TEST(all_t, basic)
|
||||
detail::all_t<std::string &&>,
|
||||
detail::owning_view<std::string>>);
|
||||
}
|
||||
|
||||
TEST(all_t, array)
|
||||
{
|
||||
char str[] = "text";
|
||||
char const const_str[] = "text";
|
||||
|
||||
static_assert(detail::range_<char[5]>);
|
||||
static_assert(std::is_object_v<char[5]>);
|
||||
detail::ref_view<char[5]> ref_view_(str);
|
||||
{
|
||||
auto && result = detail::all(
|
||||
BOOST_PARSER_SUBRANGE(std::begin(const_str), std::end(const_str)));
|
||||
static_assert(std::is_same_v<
|
||||
decltype(result),
|
||||
BOOST_PARSER_SUBRANGE<decltype(std::begin(const_str))> &&>);
|
||||
}
|
||||
{
|
||||
auto && result = detail::all(str);
|
||||
static_assert(
|
||||
std::is_same_v<decltype(result), detail::ref_view<char[5]> &&>);
|
||||
}
|
||||
{
|
||||
auto && result = detail::all(const_str);
|
||||
static_assert(std::is_same_v<
|
||||
decltype(result),
|
||||
detail::ref_view<char const[5]> &&>);
|
||||
}
|
||||
|
||||
static_assert(
|
||||
std::is_same_v<
|
||||
detail::all_t<BOOST_PARSER_SUBRANGE<decltype(std::begin(const_str))>>,
|
||||
BOOST_PARSER_SUBRANGE<decltype(std::begin(const_str))>>);
|
||||
|
||||
static_assert(
|
||||
std::
|
||||
is_same_v<detail::all_t<char(&)[5]>, detail::ref_view<char[5]>>);
|
||||
|
||||
static_assert(std::is_same_v<
|
||||
detail::all_t<char const(&)[5]>,
|
||||
detail::ref_view<char const[5]>>);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user