y3c-stl 0.3.3
Friendly C++ STL wrapper with automatic stacktrace
Loading...
Searching...
No Matches
y3c Namespace Reference

Namespaces

namespace  internal
 

Classes

class  array
 固定長配列 (std::array) More...
 
class  out_of_range
 
class  shared_ptr
 所有権を共有するスマートポインタ (std::shared_ptr) More...
 
class  vector
 可変長配列 (std::vector) More...
 
class  wrap
 値型wrap: base_type型のデータと、このデータの生存状態を管理するクラス More...
 
class  wrap< element_type & >
 参照型wrap: element_type型のデータへの参照を持つクラス More...
 
class  wrap< element_type * >
 ポインタ型wrap: element_type型のデータへのポインタと、 このポインタ自体の生存状態を管理するクラス More...
 

Typedefs

template<typename element_type >
using wrap_ref = wrap< element_type & >
 
template<typename element_type >
using const_wrap_ref = wrap< const element_type & >
 
template<typename element_type >
using ptr = wrap< element_type * >
 
template<typename element_type >
using const_ptr = wrap< const element_type * >
 
template<typename element_type >
using ptr_const = const wrap< element_type * >
 
template<typename element_type >
using const_ptr_const = const wrap< const element_type * >
 

Functions

template<typename T , std::size_t N>
std::array< T, N > & unwrap (array< T, N > &wrapper) noexcept
 
template<typename T , std::size_t N>
const std::array< T, N > & unwrap (const array< T, N > &wrapper) noexcept
 
template<typename T , std::size_t N>
void swap (array< T, N > &lhs, array< T, N > &rhs)
 
template<typename T , std::size_t N>
bool operator== (const array< T, N > &lhs, const array< T, N > &rhs)
 
template<typename T , std::size_t N>
bool operator!= (const array< T, N > &lhs, const array< T, N > &rhs)
 
template<typename T , std::size_t N>
bool operator< (const array< T, N > &lhs, const array< T, N > &rhs)
 
template<typename T , std::size_t N>
bool operator<= (const array< T, N > &lhs, const array< T, N > &rhs)
 
template<typename T , std::size_t N>
bool operator> (const array< T, N > &lhs, const array< T, N > &rhs)
 
template<typename T , std::size_t N>
bool operator>= (const array< T, N > &lhs, const array< T, N > &rhs)
 
template<typename element_type >
element_type * unwrap (const internal::contiguous_iterator< element_type > &wrapper) noexcept
 
template<typename T >
const std::shared_ptr< T > & unwrap (const shared_ptr< T > &wrapper) noexcept
 
template<typename T >
void swap (shared_ptr< T > &lhs, shared_ptr< T > &rhs) noexcept
 
template<typename T , typename U >
bool operator== (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 
template<typename T , typename U >
bool operator!= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 
template<typename T , typename U >
bool operator< (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 
template<typename T , typename U >
bool operator<= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 
template<typename T , typename U >
bool operator> (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 
template<typename T , typename U >
bool operator>= (const shared_ptr< T > &lhs, const shared_ptr< U > &rhs) noexcept
 
template<class CharT , class Traits , typename T >
std::basic_ostream< CharT, Traits > & operator<< (std::basic_ostream< CharT, Traits > &os, const shared_ptr< T > &p)
 
template<typename T , typename... Args>
shared_ptr< T > make_shared (Args &&...args)
 shared_ptrを構築する
 
void link ()
 
template<typename T >
const std::vector< T > & unwrap (const vector< T > &wrapper) noexcept
 
template<typename T >
void swap (vector< T > &lhs, vector< T > &rhs)
 
template<typename T >
bool operator== (const vector< T > &lhs, const vector< T > &rhs)
 
template<typename T >
bool operator!= (const vector< T > &lhs, const vector< T > &rhs)
 
template<typename T >
bool operator< (const vector< T > &lhs, const vector< T > &rhs)
 
template<typename T >
bool operator<= (const vector< T > &lhs, const vector< T > &rhs)
 
template<typename T >
bool operator> (const vector< T > &lhs, const vector< T > &rhs)
 
template<typename T >
bool operator>= (const vector< T > &lhs, const vector< T > &rhs)
 
template<typename element_type >
element_type & unwrap (const wrap< element_type & > &wrapper, internal::skip_trace_tag={})
 
template<typename base_type , typename std::enable_if<!std::is_pointer< base_type >::value &&!std::is_reference< base_type >::value, std::nullptr_t >::type = nullptr>
base_type & unwrap (wrap< base_type > &wrapper) noexcept
 
template<typename base_type , typename std::enable_if<!std::is_pointer< base_type >::value &&!std::is_reference< base_type >::value, std::nullptr_t >::type = nullptr>
const base_type & unwrap (const wrap< base_type > &wrapper) noexcept
 
template<typename element_type >
element_type * unwrap (const wrap< element_type * > &wrapper) noexcept
 

Typedef Documentation

◆ const_ptr

template<typename element_type >
using const_ptr = wrap<const element_type *>

◆ const_ptr_const

template<typename element_type >
using const_ptr_const = const wrap<const element_type *>

◆ const_wrap_ref

template<typename element_type >
using const_wrap_ref = wrap<const element_type &>

◆ ptr

template<typename element_type >
using ptr = wrap<element_type *>

◆ ptr_const

template<typename element_type >
using ptr_const = const wrap<element_type *>

◆ wrap_ref

template<typename element_type >
using wrap_ref = wrap<element_type &>

Function Documentation

◆ link()

void link ( )
inline

実際のところなにもしない。

y3c-stlはほとんどがテンプレートクラスであるため、 使い方によってはy3cライブラリにincludeやリンクしてもy3cの初期化がされない場合がある。

y3cライブラリのテンプレートでない関数を何かしら1つ呼ぶことで 確実にリンクされ初期化させることができるので、 こんなものを用意してみた。

Examples
terminate-direct.cc, terminate-throw-any.cc, terminate-throw-exception.cc, and terminate-throw-string.cc.

◆ make_shared()

template<typename T , typename... Args>
shared_ptr< T > make_shared ( Args &&...  args)

shared_ptrを構築する

Parameters
argsTのコンストラクタに渡す引数
See also
make_shared - cpprefjp

◆ operator!=() [1/3]

template<typename T , std::size_t N>
bool operator!= ( const array< T, N > &  lhs,
const array< T, N > &  rhs 
)

◆ operator!=() [2/3]

template<typename T , typename U >
bool operator!= ( const shared_ptr< T > &  lhs,
const shared_ptr< U > &  rhs 
)
noexcept

◆ operator!=() [3/3]

template<typename T >
bool operator!= ( const vector< T > &  lhs,
const vector< T > &  rhs 
)

◆ operator<() [1/3]

template<typename T , std::size_t N>
bool operator< ( const array< T, N > &  lhs,
const array< T, N > &  rhs 
)

◆ operator<() [2/3]

template<typename T , typename U >
bool operator< ( const shared_ptr< T > &  lhs,
const shared_ptr< U > &  rhs 
)
noexcept

◆ operator<() [3/3]

template<typename T >
bool operator< ( const vector< T > &  lhs,
const vector< T > &  rhs 
)

◆ operator<<()

template<class CharT , class Traits , typename T >
std::basic_ostream< CharT, Traits > & operator<< ( std::basic_ostream< CharT, Traits > &  os,
const shared_ptr< T > &  p 
)

◆ operator<=() [1/3]

template<typename T , std::size_t N>
bool operator<= ( const array< T, N > &  lhs,
const array< T, N > &  rhs 
)

◆ operator<=() [2/3]

template<typename T , typename U >
bool operator<= ( const shared_ptr< T > &  lhs,
const shared_ptr< U > &  rhs 
)
noexcept

◆ operator<=() [3/3]

template<typename T >
bool operator<= ( const vector< T > &  lhs,
const vector< T > &  rhs 
)

◆ operator==() [1/3]

template<typename T , std::size_t N>
bool operator== ( const array< T, N > &  lhs,
const array< T, N > &  rhs 
)

◆ operator==() [2/3]

template<typename T , typename U >
bool operator== ( const shared_ptr< T > &  lhs,
const shared_ptr< U > &  rhs 
)
noexcept

◆ operator==() [3/3]

template<typename T >
bool operator== ( const vector< T > &  lhs,
const vector< T > &  rhs 
)

◆ operator>() [1/3]

template<typename T , std::size_t N>
bool operator> ( const array< T, N > &  lhs,
const array< T, N > &  rhs 
)

◆ operator>() [2/3]

template<typename T , typename U >
bool operator> ( const shared_ptr< T > &  lhs,
const shared_ptr< U > &  rhs 
)
noexcept

◆ operator>() [3/3]

template<typename T >
bool operator> ( const vector< T > &  lhs,
const vector< T > &  rhs 
)

◆ operator>=() [1/3]

template<typename T , std::size_t N>
bool operator>= ( const array< T, N > &  lhs,
const array< T, N > &  rhs 
)

◆ operator>=() [2/3]

template<typename T , typename U >
bool operator>= ( const shared_ptr< T > &  lhs,
const shared_ptr< U > &  rhs 
)
noexcept

◆ operator>=() [3/3]

template<typename T >
bool operator>= ( const vector< T > &  lhs,
const vector< T > &  rhs 
)

◆ swap() [1/3]

template<typename T , std::size_t N>
void swap ( array< T, N > &  lhs,
array< T, N > &  rhs 
)

◆ swap() [2/3]

template<typename T >
void swap ( shared_ptr< T > &  lhs,
shared_ptr< T > &  rhs 
)
noexcept

◆ swap() [3/3]

template<typename T >
void swap ( vector< T > &  lhs,
vector< T > &  rhs 
)

◆ unwrap() [1/9]

template<typename T , std::size_t N>
std::array< T, N > & unwrap ( array< T, N > &  wrapper)
noexcept

◆ unwrap() [2/9]

template<typename T , std::size_t N>
const std::array< T, N > & unwrap ( const array< T, N > &  wrapper)
noexcept

◆ unwrap() [3/9]

template<typename element_type >
element_type * unwrap ( const internal::contiguous_iterator< element_type > &  wrapper)
noexcept

◆ unwrap() [4/9]

template<typename T >
const std::shared_ptr< T > & unwrap ( const shared_ptr< T > &  wrapper)
noexcept

◆ unwrap() [5/9]

template<typename T >
const std::vector< T > & unwrap ( const vector< T > &  wrapper)
noexcept

◆ unwrap() [6/9]

template<typename base_type , typename std::enable_if<!std::is_pointer< base_type >::value &&!std::is_reference< base_type >::value, std::nullptr_t >::type = nullptr>
const base_type & unwrap ( const wrap< base_type > &  wrapper)
noexcept

◆ unwrap() [7/9]

template<typename element_type >
element_type & unwrap ( const wrap< element_type & > &  wrapper,
internal::skip_trace_tag  = {} 
)

◆ unwrap() [8/9]

template<typename element_type >
element_type * unwrap ( const wrap< element_type * > &  wrapper)
noexcept

◆ unwrap() [9/9]

template<typename base_type , typename std::enable_if<!std::is_pointer< base_type >::value &&!std::is_reference< base_type >::value, std::nullptr_t >::type = nullptr>
base_type & unwrap ( wrap< base_type > &  wrapper)
noexcept