namespace std {
template <indirectly_readable I,
indirectly_regular_unary_invocable<I> Proj>
using projected_value_t = remove_cvref_t<invoke_result_t<Proj&, iter_value_t<I>&>>;
}
概要
イテレータ型I
が指す値型を取得する。
この型は、間接参照可能な型I
に任意の射影操作Proj
を適用した結果となる値型を返す。
例
#include <concepts>
#include <iterator>
#include <functional>
#include <vector>
int main() {
using vec_iterator = std::vector<int>::iterator;
using pointer = double*;
static_assert(std::same_as<
std::projected_value_t<vec_iterator, std::identity>,
int
>);
static_assert(std::same_as<
std::projected_value_t<pointer, std::identity>,
double
>);
}
出力
バージョン
言語
- C++26
処理系
- Clang: 21 ✅
- GCC: 15.1 ✅
- Visual C++: 2022 Update 13 ❌
関連項目
std::projected
std::ranges::find()
std::ranges::find_last()
std::ranges::count()
std::ranges::search_n()
std::ranges::replace()
std::ranges::replace_if()
std::ranges::replace_copy()
std::ranges::remove()
std::ranges::remove_copy()
std::ranges::lower_bound()
std::ranges::upper_bound()
std::ranges::equal_range()
std::ranges::binary_search()
std::ranges::contains()
参照
- P2248R8 Enabling list-initialization for algorithms
- C++26で、アルゴリズムに波カッコ初期化 (リスト初期化) を渡せるようにするために導入された。
find(r, {1, 2});
- C++26で、アルゴリズムに波カッコ初期化 (リスト初期化) を渡せるようにするために導入された。