2
0
mirror of https://github.com/boostorg/parser.git synced 2026-01-19 16:32:13 +00:00
Files
parser/test/compile_all_t.cpp

111 lines
3.6 KiB
C++

/**
* Copyright (C) 2024 T. Zachary Laine
*
* Distributed under the Boost Software License, Version 1.0. (See
* accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*/
#include <boost/parser/config.hpp>
#include <boost/parser/detail/text/detail/all_t.hpp>
#include <string>
#include <type_traits>
using namespace boost::parser::detail::text;
void compile_all_t()
{
{
std::string str;
std::string const const_str;
{
auto && result = detail::all(
BOOST_PARSER_SUBRANGE(const_str.begin(), const_str.end()));
static_assert(
std::is_same_v<
decltype(result),
BOOST_PARSER_SUBRANGE<decltype(const_str.begin())> &&>);
}
{
auto && result = detail::all(str);
static_assert(std::is_same_v<
decltype(result),
detail::ref_view<std::string> &&>);
}
{
auto && result = detail::all(const_str);
static_assert(std::is_same_v<
decltype(result),
detail::ref_view<std::string const> &&>);
}
{
auto && result = detail::all(std::string{});
static_assert(std::is_same_v<
decltype(result),
detail::owning_view<std::string> &&>);
}
static_assert(std::is_same_v<
detail::all_t<
BOOST_PARSER_SUBRANGE<decltype(const_str.begin())>>,
BOOST_PARSER_SUBRANGE<decltype(const_str.begin())>>);
static_assert(std::is_same_v<
detail::all_t<std::string &>,
detail::ref_view<std::string>>);
static_assert(std::is_same_v<
detail::all_t<std::string const &>,
detail::ref_view<std::string const>>);
static_assert(std::is_same_v<
detail::all_t<std::string &&>,
detail::owning_view<std::string>>);
}
{
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]>>);
}
}