std::projected_value_t

From cppreference.com
< cpp‎ | iterator
 
 
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
projected_value_t
(C++26)
Iterator adaptors
Range access
(C++11)(C++14)
(C++14)(C++14)  
(C++11)(C++14)
(C++14)(C++14)  
(C++17)(C++20)
(C++17)
(C++17)
 
Defined in header <iterator>
template< std::indirectly_readable I,

          std::indirectly_regular_unary_invocable<I> Proj >
using projected_value_t =

    std::remove_cvref_t<std::invoke_result_t<Proj&, std::iter_value_t<I>&>>;
(since C++26)

The alias template projected_value_t obtains the value type by stripping any reference and its topmost cv-qualifiers of the result type of applying Proj to std::iter_value_t<I>&.

projected_value_t is used to determine the default value type in some algorithms such as ranges::contains.

Template parameters

I - an indirectly readable type
Proj - projection applied to an lvalue reference to value type of I

Notes

Feature-test macro Value Std Feature
__cpp_lib_algorithm_default_value_type 202403L (C++26) default template type for algorithm values using std::projected_value_t

Example

See also

computes the result of invoking a callable object on the result of dereferencing some set of indirectly_readable types
(alias template)
(C++20)
helper template for specifying the constraints on algorithms that accept projections
(class template)