C++ Library Extensions 2022.12.09
To help learn modern C++ programming
stl_extension< ElementType, ContainerType > Class Template Reference
Inheritance diagram for stl_extension< ElementType, ContainerType >:
[legend]
Collaboration diagram for stl_extension< ElementType, ContainerType >:
[legend]

Public Types

using base_container_type = ContainerType< ElementType >
 
using iterator = typename ContainerType< ElementType >::iterator
 
using size_type = typename ContainerType< ElementType >::size_type
 

Public Member Functions

auto begin_move_iterator ()
 
auto end_move_iterator ()
 
auto index_to_iterator (size_type index) noexcept
 
auto iterator_to_index (iterator itr)
 
auto interator_to_move_iterator (iterator itr) noexcept
 
auto index_to_move_iterator (size_type index) noexcept
 
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > move_front ()
 
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > move_back ()
 
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > move (typename base_container_type::iterator itr)
 
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > move (typename base_container_type::size_type index)
 
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > move (typename base_container_type::iterator itr_begin, typename base_container_type::iterator itr_end)
 
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > move (typename base_container_type::size_type index_begin, typename base_container_type::size_type index_end) noexcept(false)
 

Detailed Description

template<typename ElementType, template< typename, typename... > class ContainerType>
class stl_extension< ElementType, ContainerType >

Definition at line 92 of file 050-stl_extension.cpp.

Member Typedef Documentation

◆ base_container_type

template<typename ElementType , template< typename, typename... > class ContainerType>
using stl_extension< ElementType, ContainerType >::base_container_type = ContainerType<ElementType>

Definition at line 96 of file 050-stl_extension.cpp.

◆ iterator

template<typename ElementType , template< typename, typename... > class ContainerType>
using stl_extension< ElementType, ContainerType >::iterator = typename ContainerType<ElementType>::iterator

Definition at line 98 of file 050-stl_extension.cpp.

◆ size_type

template<typename ElementType , template< typename, typename... > class ContainerType>
using stl_extension< ElementType, ContainerType >::size_type = typename ContainerType<ElementType>::size_type

Definition at line 99 of file 050-stl_extension.cpp.

Member Function Documentation

◆ begin_move_iterator()

template<typename ElementType , template< typename, typename... > class ContainerType>
auto stl_extension< ElementType, ContainerType >::begin_move_iterator ( )
inline

Definition at line 103 of file 050-stl_extension.cpp.

◆ end_move_iterator()

template<typename ElementType , template< typename, typename... > class ContainerType>
auto stl_extension< ElementType, ContainerType >::end_move_iterator ( )
inline

Definition at line 108 of file 050-stl_extension.cpp.

◆ index_to_iterator()

template<typename ElementType , template< typename, typename... > class ContainerType>
auto stl_extension< ElementType, ContainerType >::index_to_iterator ( size_type  index)
inlinenoexcept

Definition at line 113 of file 050-stl_extension.cpp.

◆ index_to_move_iterator()

template<typename ElementType , template< typename, typename... > class ContainerType>
auto stl_extension< ElementType, ContainerType >::index_to_move_iterator ( size_type  index)
inlinenoexcept

Definition at line 130 of file 050-stl_extension.cpp.

◆ interator_to_move_iterator()

template<typename ElementType , template< typename, typename... > class ContainerType>
auto stl_extension< ElementType, ContainerType >::interator_to_move_iterator ( iterator  itr)
inlinenoexcept

Definition at line 125 of file 050-stl_extension.cpp.

◆ iterator_to_index()

template<typename ElementType , template< typename, typename... > class ContainerType>
auto stl_extension< ElementType, ContainerType >::iterator_to_index ( iterator  itr)
inline

Definition at line 120 of file 050-stl_extension.cpp.

◆ move() [1/4]

template<typename ElementType , template< typename, typename... > class ContainerType>
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > stl_extension< ElementType, ContainerType >::move ( typename base_container_type::iterator  itr)
inline

Definition at line 191 of file 050-stl_extension.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ move() [2/4]

template<typename ElementType , template< typename, typename... > class ContainerType>
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > stl_extension< ElementType, ContainerType >::move ( typename base_container_type::iterator  itr_begin,
typename base_container_type::iterator  itr_end 
)
inline

Definition at line 210 of file 050-stl_extension.cpp.

Here is the call graph for this function:

◆ move() [3/4]

template<typename ElementType , template< typename, typename... > class ContainerType>
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > stl_extension< ElementType, ContainerType >::move ( typename base_container_type::size_type  index)
inline

Definition at line 202 of file 050-stl_extension.cpp.

Here is the call graph for this function:

◆ move() [4/4]

template<typename ElementType , template< typename, typename... > class ContainerType>
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > stl_extension< ElementType, ContainerType >::move ( typename base_container_type::size_type  index_begin,
typename base_container_type::size_type  index_end 
)
inlinenoexcept

Definition at line 224 of file 050-stl_extension.cpp.

Here is the call graph for this function:

◆ move_back()

template<typename ElementType , template< typename, typename... > class ContainerType>
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > stl_extension< ElementType, ContainerType >::move_back ( )
inline

Definition at line 173 of file 050-stl_extension.cpp.

Here is the call graph for this function:

◆ move_front()

template<typename ElementType , template< typename, typename... > class ContainerType>
template<typename Type = ElementType>
std::enable_if_t< std::is_same_v< Type, ElementType > &&std::is_move_constructible_v< ElementType >, ElementType > stl_extension< ElementType, ContainerType >::move_front ( )
inline

Definition at line 157 of file 050-stl_extension.cpp.

Here is the call graph for this function:

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