File tree Expand file tree Collapse file tree 1 file changed +14
-4
lines changed Expand file tree Collapse file tree 1 file changed +14
-4
lines changed Original file line number Diff line number Diff line change 745
745
using value_type = remove_cv_t<T>;
746
746
};
747
747
748
+ template<class T>
749
+ concept @\defexposconcept {has-member-value-type}@ = requires { typename T::value_type; }; // \expos
750
+
751
+ template<class T>
752
+ concept @\defexposconcept {has-member-element-type}@ = requires { typename T::element_type; }; // \expos
753
+
748
754
template<class> struct indirectly_readable_traits { };
749
755
750
756
template<class T>
761
767
struct indirectly_readable_traits<const I>
762
768
: indirectly_readable_traits<I> { };
763
769
764
- template<class T>
765
- requires requires { typename T::value_type; }
770
+ template<@\exposconcept {has-member-value-type}@ T>
766
771
struct indirectly_readable_traits<T>
767
772
: @\placeholder {cond-value-type}@<typename T::value_type> { };
768
773
769
- template<class T>
770
- requires requires { typename T::element_type; }
774
+ template<@\exposconcept {has-member-element-type}@ T>
771
775
struct indirectly_readable_traits<T>
772
776
: @\placeholder {cond-value-type}@<typename T::element_type> { };
773
777
778
+ template<@\exposconcept {has-member-value-type}@ T>
779
+ requires @\exposconcept {has-member-element-type}@<T> &&
780
+ @\libconcept {same_as}@<remove_cv_t<typename T::element_type>, remove_cv_t<typename T::value_type>>
781
+ struct indirectly_readable_traits<T>
782
+ : @\placeholder {cond-value-type}@<typename T::value_type> { };
783
+
774
784
template<class T> using iter_value_t = @\seebelow@ ;
775
785
\end {codeblock }
776
786
You can’t perform that action at this time.
0 commit comments