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