typename gsl::span<const gsl::byte>::const_iterator
이 범위 -v3의 Readable
개념을 만족하지 않음을 발견했습니다.CommonReference가 Range-v3에서 읽기 가능에 사용하는 것은 무엇입니까?
template<typename I>
auto requires_(I&&) -> decltype(
concepts::valid_expr(
// The value, reference and rvalue reference types are related
// through the CommonReference concept.
concepts::model_of<CommonReference, reference_t<I> &&, value_t<I> &>(),
concepts::model_of<CommonReference, reference_t<I> &&, rvalue_reference_t<I> &&>(),
concepts::model_of<CommonReference, rvalue_reference_t<I> &&, value_t<I> const &>(),
// Experimental additional tests. If nothing else, this is a good workout
// for the common_reference code.
concepts::model_of<Same, ranges::common_reference_t<reference_t<I>, value_t<I>>, value_t<I>>(),
concepts::model_of<Same, ranges::common_reference_t<rvalue_reference_t<I>, value_t<I>>, value_t<I>>()
));
ranges::common_reference_t
가 value_type
에서 const
을 제거하고 그들이 동일하지 않습니다 : 개념을 검토 한 결과,이 제약 조건을 발견했다.
CommonReference
제약 조건은 무엇을 의미합니까? 왜 Readable
을 만족해야합니까?
'Readable'은 포인터처럼 보이는 것들 (반복자와 스마트 포인터 같은 것)에 의해 만족됩니다. 'span'은 포인터가 아닙니다. 그것은 더 많은 '범위'와 같습니다. 나는 당신이'span'을 제약하기 위해 잘못된 개념을 사용하고 있다고 생각합니다. –
그리고 기록을 위해, 마지막 두 개의 "실험적인"'Same' 제약 조건이 최신 range-v3 릴리즈에서 제거되었습니다. 업데이트해야합니다. –
@EricNiebler 죄송합니다, 실수. 나는 decltype (span.cbegin())이'Readable'을 만족하지 않는다는 것을 의미합니다. – Cu2S