Skip to content

undefined ztd::ranges::range_element_type_t #14

Description

@tuanthien

I got an error when compile with ztd.text (msvc 19.39 with c++latest) at this line
https://github.com/soasis/text/blob/fc30abbc3056a0ea69f2c6ef25221c3244bf31cf/include/ztd/text/detail/span_reconstruct.hpp#L90

Look like ::ztd::ranges::range_element_type_t is undefined when ZTD_IS_ON(ZTD_STD_LIBRARY_RANGES) at line 882 in adl.hpp is true

#if ZTD_IS_ON(ZTD_STD_LIBRARY_RANGES)
template <typename _Range>
using range_iterator_t = ::std::ranges::iterator_t<_Range>;
template <typename _Range>
using range_sentinel_t = ::std::ranges::sentinel_t<_Range>;
template <typename _Range>
using range_value_type_t = ::std::ranges::range_value_t<_Range>;
template <typename _Range>
using range_reference_t = ::std::ranges::range_reference_t<_Range>;
template <typename _Range>
using range_rvalue_reference_t = ::std::ranges::range_rvalue_reference_t<_Range>;
template <typename _Range>
using range_difference_type_t = ::std::ranges::range_difference_t<_Range>;
template <typename _Range>
using range_size_type_t = ::std::ranges::range_size_t<_Range>;
#else
template <typename _Range>
using range_iterator_t = ::std::remove_reference_t<decltype(::ztd::ranges::begin(
::std::declval<::std::add_lvalue_reference_t<_Range>>()))>;
template <typename _Range>
using range_sentinel_t = ::std::remove_reference_t<decltype(::ztd::ranges::end(
::std::declval<::std::add_lvalue_reference_t<_Range>>()))>;
template <typename _Range>
using range_value_type_t = iterator_value_type_t<range_iterator_t<_Range>>;
template <typename _Range>
using range_element_type_t = iterator_element_type_t<range_iterator_t<_Range>>;
template <typename _Range>
using range_reference_t = iterator_reference_t<range_iterator_t<_Range>>;
template <typename _Range>
using range_rvalue_reference_t = iterator_rvalue_reference_t<range_iterator_t<_Range>>;
template <typename _Range>
using range_difference_type_t = iterator_difference_type_t<range_iterator_t<_Range>>;
template <typename _Range>
using range_size_type_t = iterator_size_type_t<range_iterator_t<_Range>>;
#endif

I copy line 916 to 891 and it compiles.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions