namespace std {
template <class InputIterator,
class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>>
forward_list(InputIterator, InputIterator, Allocator = Allocator())
-> forward_list<typename iterator_traits<InputIterator>::value_type, Allocator>;
}
概要
std::forward_list
クラステンプレートの型推論補助。イテレータ範囲から推論する。
例
#include <forward_list>
#include <type_traits>
int main()
{
// 初期化子リストから推論
std::forward_list fls1 = {1, 2, 3};
static_assert(std::is_same_v<decltype(fls1), std::forward_list<int>>);
// パラメータ設定済みのforward_listからの推論
std::forward_list fls2 = fls1;
static_assert(std::is_same_v<decltype(fls2), std::forward_list<int>>);
// 値1を3回繰り返すコンストラクタからの推論。
// fls3{3, 1} とすると初期化子リストと見なされてしまうので注意
std::forward_list fls3(3, 1);
static_assert(std::is_same_v<decltype(fls3), std::forward_list<int>>);
// イテレータ範囲からの推論。
// fls4{fls1.begin(), fls1.end()} とすると、イテレータの初期化子リストと見なされてしまうので注意
std::forward_list fls4(fls1.begin(), fls1.end());
static_assert(std::is_same_v<decltype(fls4), std::forward_list<int>>);
}
出力
バージョン
言語
- C++17
処理系
- Clang:
- GCC: 8.1 ✅
- Visual C++: ??