namespace std {
template <class Container>
queue(Container)
-> queue<typename Container::value_type, Container>; // (1)
template <class InputIterator>
queue(InputIterator, InputIterator)
-> queue<<InputIterator>>; // (2) C++23
template <ranges::input_range R>
queue(from_range_t, R&&) -> queue<ranges::range_value_t<R>>; // (3) C++23
template <class Container, class Allocator>
queue(Container, Allocator)
-> queue<typename Container::value_type, Container>; // (4)
template <class InputIterator, class Allocator>
queue(InputIterator, InputIterator, Allocator)
-> queue<iter-value-type<InputIterator>, deque<iter-value-type<InputIterator>,
Allocator>>; // (5) C++23
template <ranges::input_range R, class Allocator>
queue(from_range_t, R&&, Allocator)
-> queue<ranges::range_value_t<R>, deque<ranges::range_value_t<R>,
Allocator>>; // (6) C++23
}
概要
std::queue
クラステンプレートの型推論補助。
- (1) : 元となるコンテナから推論する。
- (2) : イテレータ範囲から推論する。
- (3) : Rangeからの推論する。
- (4) : 元となるコンテナとアロケータから推論する。
- (5) : イテレータ範囲とアロケータから推論する。
- (6) : Rangeとアロケータからの推論する。
例
#include <iostream>
#include <queue>
#include <type_traits>
int main()
{
std::deque d = {1, 2, 3};
// 元となるコンテナから推論
std::queue que {d};
static_assert(std::is_same_v<
decltype(que),
std::queue<int>
>);
while (!que.empty()) {
std::cout << que.front() << std::endl;
que.pop();
}
}
出力
1
2
3
バージョン
言語
- C++17
処理系
- Clang:
- GCC:
- Visual C++: ??