4#ifndef _Stroika_Foundation_Containers_Stack_h_
5#define _Stroika_Foundation_Containers_Stack_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
12#include "Stroika/Foundation/Common/Concepts.h"
13#include "Stroika/Foundation/Containers/Common.h"
33 using Traversal::IInputIterator;
34 using Traversal::IIterableOfTo;
35 using Traversal::Iterable;
36 using Traversal::Iterator;
101#if qCompilerAndStdLib_RequiresNotMatchInlineOutOfLineForTemplateClassBeingDefined_Buggy
106 template <IIterableOfTo<T> ITERABLE_OF_ADDABLE>
110 template <IInputIterator<T> ITERATOR_OF_ADDABLE>
114 explicit Stack (shared_ptr<_IRep>&&
src)
noexcept;
115 explicit Stack (
const shared_ptr<_IRep>&
src)
noexcept;
182 nonvirtual
void clear ();
197 nonvirtual
void _AssertRepValidType ()
const;
212 virtual ~_IRep () =
default;
215 virtual shared_ptr<_IRep> CloneEmpty ()
const = 0;
Implementation detail for Stack<T> implementors.
typename Iterable< T >::template SequentialEqualsComparer< T_EQUALS_COMPARER > EqualsComparer
simply indirect to @Iterable<T>::SequentialEqualsComparer
typename inherited::value_type value_type
nonvirtual value_type Pop()
nonvirtual void RemoveAll()
nonvirtual void Push(ArgByValueType< value_type > item)
nonvirtual void clear()
STL-ish alias for RemoveAll ().
Iterable<T> is a base class for containers which easily produce an Iterator<T> to traverse them.
nonvirtual CONTAINER_OF_T As(CONTAINER_OF_T_CONSTRUCTOR_ARGS... args) const
T value_type
value_type is an alias for the type iterated over - like vector<T>::value_type
static constexpr default_sentinel_t end() noexcept
Support for ranged for, and STL syntax in general.
conditional_t<(sizeof(CHECK_T)<=2 *sizeof(void *)) and is_trivially_copyable_v< CHECK_T >, CHECK_T, const CHECK_T & > ArgByValueType
This is an alias for 'T' - but how we want to pass it on stack as formal parameter.