std::from_range, std::from_range_t
ja.cppreference.net から
| ヘッダ <ranges>
|
||
struct from_range_t { explicit from_range_t() = default; };
|
で定義 (C++23以上) | |
inline constexpr std::from_range_t from_range {};
|
(C++23以上) | |
std::from_rangeは、適切なコンテナのコンストラクタに渡すことで、格納されるメンバが範囲から構築されることを示すための曖昧さ除去タグです。
対応する型 std::from_range_t は、コンストラクタのパラメータリストで意図されたタグと一致させるために使用できます。
標準ライブラリ
以下の標準ライブラリ型は、コンストラクタで
std::from_range_t
型を使用します:
コンテナライブラリ | |
(C++23) |
範囲から vector を構築する ( std::vector<T,Allocator> のパブリックメンバ関数)
|
(C++26) |
範囲から inplace_vector を構築する ( std::inplace_vector<T,N> のパブリックメンバ関数)
|
(C++26) |
範囲から hive を構築する ( std::hive<T,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から deque を構築する ( std::deque<T,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から forward_list を構築する ( std::forward_list<T,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から list を構築する ( std::list<T,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から set を構築する ( std::set<Key,Compare,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から map を構築する ( std::map<Key,T,Compare,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から multiset を構築する ( std::multiset<Key,Compare,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から multimap を構築する ( std::multimap<Key,T,Compare,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から unordered_set を構築する ( std::unordered_set<Key,Hash,KeyEqual,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から unordered_map を構築する ( std::unordered_map<Key,T,Hash,KeyEqual,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から unordered_multiset を構築する ( std::unordered_multiset<Key,Hash,KeyEqual,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から unordered_multimap を構築する ( std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator> のパブリックメンバ関数)
|
(C++23) |
範囲から priority_queue を構築する ( std::priority_queue<T,Container,Compare> のパブリックメンバ関数)
|
(C++23) |
範囲から queue を構築する ( std::queue<T,Container> のパブリックメンバ関数)
|
(C++23) |
範囲から stack を構築する ( std::stack<T,Container> のパブリックメンバ関数)
|
(C++23) |
範囲から flat_set を構築する ( std::flat_set<Key,Compare,KeyContainer> のパブリックメンバ関数)
|
(C++23) |
範囲から flat_map を構築する ( std::flat_map<Key,T,Compare,KeyContainer,MappedContainer> のパブリックメンバ関数)
|
(C++23) |
範囲から flat_multiset を構築する ( std::flat_multiset<Key,Compare,KeyContainer> のパブリックメンバ関数)
|
(C++23) |
範囲から flat_multimap を構築する ( std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer> のパブリックメンバ関数)
|
文字列ライブラリ |
|
|
(C++23)
|
範囲から
basic_string
を構築する
(
std::basic_string<CharT,Traits,Allocator>
の公開メンバ関数)
|
注記
| 機能テスト マクロ | 値 | 標準 | 機能 |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | コンテナ互換範囲 からの構築用タグ付きコンストラクタ |
例
このコードを実行
#include <cassert> #include <string> int main() { #ifdef __cpp_lib_containers_ranges auto const range = {0x43, 43, 43}; std::string str{std::from_range, range}; // タグ付きコンストラクタを使用 assert(str == "C++"); #endif }
関連項目
|
インプレース構築タグ
(タグ) |
|
|
範囲の要素がソートされていることを示す(一意性は不要)
(タグ) |
|
|
(C++23)
|
範囲の要素がソートされ一意であることを示す
(タグ) |
|
(C++23)
|
入力範囲から新しい非ビューオブジェクトを構築する
(関数テンプレート) |