range-v3 の概念をtypename gsl::span<const gsl::byte>::const_iterator
満たしていないことがわかりました。Readable
コンセプトを調べた後、次の制約が見つかりました。
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
const
から を削除するvalue_type
と、それらは同じではありません。
CommonReference
制約とはどういう意味ですか? なぜReadable
彼らを満足させなければならないのですか?