Iros
 
Loading...
Searching...
No Matches
di::Stack< Value, Con > Class Template Reference

#include <di/container/queue/stack.h>

Public Member Functions

 Stack ()=default
 
constexpr Stack (Con &&container)
 
constexpr auto top () -> Optional< Value & >
 
constexpr auto top () const -> Optional< Value const & >
 
constexpr auto empty () const -> bool
 
constexpr auto size () const
 
constexpr auto push (Value const &value) -> decltype(auto) requires(concepts::CopyConstructible< Value >)
 
constexpr auto push (Value &&value) -> decltype(auto)
 
template<typename... Args>
requires (concepts::ConstructibleFrom<Value, Args...>)
constexpr auto emplace (Args &&... args) -> decltype(auto)
 
template<concepts::ContainerCompatible< Value > Other>
constexpr auto push_container (Other &&container)
 
constexpr auto pop ()
 
constexpr auto begin ()
 
constexpr auto end ()
 
constexpr auto base () const -> Con const &
 
constexpr void clear ()
 

Friends

template<concepts::InputContainer Other>
requires (concepts::ContainerCompatible<Other, Value>)
constexpr friend auto tag_invoke (types::Tag< util::create_in_place >, InPlaceType< Stack >, Other &&other)
 
constexpr friend auto tag_invoke (types::Tag< util::clone >, Stack const &self)
 

Constructor & Destructor Documentation

◆ Stack() [1/2]

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
di::container::Stack< Value, Con >::Stack ( )
default

◆ Stack() [2/2]

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
di::container::Stack< Value, Con >::Stack ( Con && container)
inlineexplicitconstexpr

Member Function Documentation

◆ base()

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
auto di::container::Stack< Value, Con >::base ( ) const -> Con const&
inlineconstexpr

◆ begin()

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
auto di::container::Stack< Value, Con >::begin ( )
inlineconstexpr

◆ clear()

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
void di::container::Stack< Value, Con >::clear ( )
inlineconstexpr

◆ emplace()

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
template<typename... Args>
requires (concepts::ConstructibleFrom<Value, Args...>)
auto di::container::Stack< Value, Con >::emplace ( Args &&... args) -> decltype(auto)
inlineconstexpr

◆ empty()

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
auto di::container::Stack< Value, Con >::empty ( ) const -> bool
inlineconstexpr

◆ end()

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
auto di::container::Stack< Value, Con >::end ( )
inlineconstexpr

◆ pop()

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
auto di::container::Stack< Value, Con >::pop ( )
inlineconstexpr

◆ push() [1/2]

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
auto di::container::Stack< Value, Con >::push ( Value && value) -> decltype(auto)
inlineconstexpr

◆ push() [2/2]

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
auto di::container::Stack< Value, Con >::push ( Value const & value) -> decltype(auto) requires(concepts::CopyConstructible<Value>)
inlineconstexpr

◆ push_container()

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
template<concepts::ContainerCompatible< Value > Other>
auto di::container::Stack< Value, Con >::push_container ( Other && container)
inlineconstexpr

◆ size()

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
auto di::container::Stack< Value, Con >::size ( ) const
inlineconstexpr

◆ top() [1/2]

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
auto di::container::Stack< Value, Con >::top ( ) -> Optional<Value&>
inlineconstexpr

◆ top() [2/2]

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
auto di::container::Stack< Value, Con >::top ( ) const -> Optional<Value const&>
inlineconstexpr

Friends And Related Symbol Documentation

◆ tag_invoke [1/2]

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
friend auto tag_invoke ( types::Tag< util::clone > ,
Stack< Value, Con > const & self )
friend

◆ tag_invoke [2/2]

template<typename Value, detail::StackCompatible< Value > Con = container::Vector<Value>>
template<concepts::InputContainer Other>
requires (concepts::ContainerCompatible<Other, Value>)
friend auto tag_invoke ( types::Tag< util::create_in_place > ,
InPlaceType< Stack< Value, Con > > ,
Other && other )
friend

The documentation for this class was generated from the following file: