Skip to content

undefined ztd::ranges::range_element_type_t #14

@tuanthien

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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions