Namespaces
Variants

std::experimental::ranges:: projected

From cppreference.net
template < Readable I, IndirectRegularUnaryInvocable < I > Proj >

struct projected {
using value_type =
std:: remove_cv_t < std:: remove_reference_t < ranges :: indirect_result_of_t < Proj & ( I ) >>> ;
ranges :: indirect_result_of_t < Proj & ( I ) > operator * ( ) const ;
} ;

template < WeaklyIncrementable I, class Proj >
struct difference_type < projected < I, Proj >> {
using type = ranges :: difference_type_t < I > ;

} ;
(ranges TS)

클래스 템플릿 projected Readable 타입 I 와 함수 Proj 를 새로운 Readable 타입으로 묶으며, 이 타입의 reference 타입은 I reference 타입에 Proj 를 적용한 결과입니다. 이는 제약 조건 명세를 용이하게 하기 위해 존재하므로, operator * ( ) 가 실제로 정의되지 않을 수 있습니다.