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