#include <algorithm>
#include <array>
+#include <functional>
#include <numeric>
#include <tuple>
#include <type_traits>
////////////////////
#include "view_tests.hpp"
+#if !defined(__cpp_lib_concepts)
+
template<typename T>
using data_t = decltype(std::declval<T>().data());
subrange<
basic_random_access_iter,
basic_random_access_iter,
- boost::stl_interfaces::v1::element_layout::discontiguous>>::value,
+ boost::stl_interfaces::element_layout::discontiguous>>::value,
"");
static_assert(
ill_formed<
subrange<
basic_random_access_iter,
basic_random_access_iter,
- boost::stl_interfaces::v1::element_layout::discontiguous> const>::
+ boost::stl_interfaces::element_layout::discontiguous> const>::
value,
"");
subrange<
int *,
int const *,
- boost::stl_interfaces::v1::element_layout::discontiguous>>::value,
+ boost::stl_interfaces::element_layout::discontiguous>>::value,
"");
static_assert(
ill_formed<
subrange<
int *,
int const *,
- boost::stl_interfaces::v1::element_layout::discontiguous> const>::
+ boost::stl_interfaces::element_layout::discontiguous> const>::
value,
"");
+#endif
+
int main()
{
basic_random_access_iter first(ints.data());
basic_random_access_iter last(ints.data() + ints.size());
- auto r = range<boost::stl_interfaces::v1::element_layout::contiguous>(
+ auto r = range<boost::stl_interfaces::element_layout::contiguous>(
first, last);
- auto empty = range<boost::stl_interfaces::v1::element_layout::contiguous>(
+ auto empty = range<boost::stl_interfaces::element_layout::contiguous>(
first, first);
// range begin/end
BOOST_TEST(!cempty);
}
+ // TODO: Disabled for now, because std::to_address() appears to be broken
+ // in GCC10, which breaks the contiguous_iterator concept.
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96416
+#if !defined(__cpp_lib_concepts)
// data
{
BOOST_TEST(r.data() != nullptr);
auto const cempty = empty;
BOOST_TEST(cempty.data() != nullptr);
}
+#endif
// size
{
zip_iter first(ints.data(), ones.data());
zip_iter last(ints.data() + ints.size(), ones.data() + ones.size());
- auto r = range<boost::stl_interfaces::v1::element_layout::discontiguous>(
+ auto r = range<boost::stl_interfaces::element_layout::discontiguous>(
first, last);
auto empty =
- range<boost::stl_interfaces::v1::element_layout::discontiguous>(
+ range<boost::stl_interfaces::element_layout::discontiguous>(
first, first);
// range begin/end