Namespaces
Variants

std:: from_range, std:: from_range_t

From cppreference.net
Ranges library
Range adaptors
定義先ヘッダ <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 型を使用します:

コンテナライブラリ
範囲から vector を構築する
( std::vector<T,Allocator> の公開メンバ関数)
範囲から inplace_vector を構築する
( std::inplace_vector<T,N> の公開メンバ関数)
範囲から hive を構築する
( Template:cpp/container/hive/title の公開メンバ関数)
範囲から deque を構築する
( std::deque<T,Allocator> の公開メンバ関数)
範囲から forward_list を構築する
( std::forward_list<T,Allocator> の公開メンバ関数)
範囲から list を構築する
( std::list<T,Allocator> の公開メンバ関数)
範囲から set を構築する
( std::set<Key,Compare,Allocator> の公開メンバ関数)
範囲から map を構築する
( std::map<Key,T,Compare,Allocator> の公開メンバ関数)
範囲から multiset を構築する
( std::multiset<Key,Compare,Allocator> の公開メンバ関数)
範囲から multimap を構築する
( std::multimap<Key,T,Compare,Allocator> の公開メンバ関数)
範囲から unordered_set を構築する
( std::unordered_set<Key,Hash,KeyEqual,Allocator> の公開メンバ関数)
範囲から unordered_map を構築する
( std::unordered_map<Key,T,Hash,KeyEqual,Allocator> の公開メンバ関数)
範囲から unordered_multiset を構築する
( std::unordered_multiset<Key,Hash,KeyEqual,Allocator> の公開メンバ関数)
範囲から unordered_multimap を構築する
( std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator> の公開メンバ関数)
範囲から priority_queue を構築する
( std::priority_queue<T,Container,Compare> の公開メンバ関数)
範囲から queue を構築する
( std::queue<T,Container> の公開メンバ関数)
範囲から stack を構築する
( std::stack<T,Container> の公開メンバ関数)
範囲から flat_set を構築する
( std::flat_set<Key,Compare,KeyContainer> の公開メンバ関数)
範囲から flat_map を構築する
( std::flat_map<Key,T,Compare,KeyContainer,MappedContainer> の公開メンバ関数)
範囲から flat_multiset を構築する
( std::flat_multiset<Key,Compare,KeyContainer> の公開メンバ関数)
範囲から flat_multimap を構築する
( std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer> の公開メンバ関数)
文字列ライブラリ
範囲から 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)
入力範囲から新しい非ビューオブジェクトを構築する
(関数テンプレート)