y3c-stl 0.3.3
Friendly C++ STL wrapper with automatic stacktrace
Loading...
Searching...
No Matches
wrap< base_type > Class Template Reference

値型wrap: base_type型のデータと、このデータの生存状態を管理するクラス More...

#include <y3c/wrap.h>

Collaboration diagram for wrap< base_type >:
[legend]

Public Member Functions

 wrap ()
 デフォルト構築
 
 wrap (const wrap &other)
 コピーコンストラクタ
 
 wrap (wrap &&other)
 ムーブコンストラクタ
 
wrapoperator= (const wrap &other)
 コピー代入
 
wrapoperator= (wrap &&other)
 ムーブ代入
 
 ~wrap ()=default
 
template<typename... Args>
 wrap (Args &&...args)
 コンストラクタ引数はそのままbase_typeのコンストラクタに渡される。
 
template<typename V >
wrapoperator= (V &&args)
 引数はそのままbase_typeのoperator=()に渡される。
 
 operator base_type & () noexcept
 base_type へのキャスト
 
 operator const base_type & () const noexcept
 const base_type へのキャスト
 
template<typename T = base_type, typename E = typename std::remove_extent<base_type>::type, typename std::enable_if< std::is_array< T >::value, std::nullptr_t >::type = nullptr, typename = internal::skip_trace_tag>
wrap< E & > operator[] (std::ptrdiff_t i)
 base_typeが E[N] の形の場合、要素への参照を返す
 
template<typename T = base_type, typename E = typename std::remove_extent<base_type>::type, typename std::enable_if< std::is_array< T >::value, std::nullptr_t >::type = nullptr, typename = internal::skip_trace_tag>
wrap< const E & > operator[] (std::ptrdiff_t i) const
 base_typeが E[N] の形の場合、要素への参照を返す(const)
 
wrap< base_type * > operator& ()
 
wrap< const base_type * > operator& () const
 

Protected Attributes

base_type base_
 
internal::life life_
 

Friends

template<typename >
class wrap
 

Detailed Description

template<typename base_type>
class y3c::wrap< base_type >

値型wrap: base_type型のデータと、このデータの生存状態を管理するクラス

  • キャストするか unwrap() することでbase_type型(の参照)に戻せる。
  • & をつけるとbase_typeのポインタをラップした y3c::wrap<base_type*> が得られる
  • base_typeが E[N] の形の場合、
    • [ ] で要素アクセスできる (参照をラップした y3c::wrap<E&> が得られる)
    • E のポインタをラップした y3c::wrap<E*> にもキャストできる
Examples
array-ptr-local.cc, array-ptr.cc, ptr-inc.cc, ptr-local.cc, ptr-null.cc, shared_ptr-ref.cc, shared_ptr-unwrap-ref.cc, vector-ptr-local.cc, vector-ptr-reallocate.cc, wrap_array-ptr-local.cc, wrap_array-ptr.cc, and wrap_array-range.cc.

Constructor & Destructor Documentation

◆ wrap() [1/4]

template<typename base_type >
wrap ( )
inline

デフォルト構築

◆ wrap() [2/4]

template<typename base_type >
wrap ( const wrap< base_type > &  other)
inline

コピーコンストラクタ

◆ wrap() [3/4]

template<typename base_type >
wrap ( wrap< base_type > &&  other)
inline

ムーブコンストラクタ

  • このデータの生存状態はムーブされない。

◆ ~wrap()

template<typename base_type >
~wrap ( )
default

◆ wrap() [4/4]

template<typename base_type >
template<typename... Args>
wrap ( Args &&...  args)
inline

コンストラクタ引数はそのままbase_typeのコンストラクタに渡される。

Member Function Documentation

◆ operator base_type &()

template<typename base_type >
operator base_type & ( )
inlinenoexcept

base_type へのキャスト

◆ operator const base_type &()

template<typename base_type >
operator const base_type & ( ) const
inlinenoexcept

const base_type へのキャスト

◆ operator&() [1/2]

template<typename base_type >
wrap< base_type * > operator& ( )
inline

◆ operator&() [2/2]

template<typename base_type >
wrap< const base_type * > operator& ( ) const
inline

◆ operator=() [1/3]

template<typename base_type >
wrap & operator= ( const wrap< base_type > &  other)
inline

コピー代入

◆ operator=() [2/3]

template<typename base_type >
template<typename V >
wrap & operator= ( V &&  args)
inline

引数はそのままbase_typeのoperator=()に渡される。

◆ operator=() [3/3]

template<typename base_type >
wrap & operator= ( wrap< base_type > &&  other)
inline

ムーブ代入

  • このデータの生存状態はムーブされない。

◆ operator[]() [1/2]

template<typename base_type >
template<typename T = base_type, typename E = typename std::remove_extent<base_type>::type, typename std::enable_if< std::is_array< T >::value, std::nullptr_t >::type = nullptr, typename = internal::skip_trace_tag>
wrap< E & > operator[] ( std::ptrdiff_t  i)
inline

base_typeが E[N] の形の場合、要素への参照を返す

  • インデックスが範囲外の場合terminateする。
Examples
wrap_array-range.cc.

◆ operator[]() [2/2]

template<typename base_type >
template<typename T = base_type, typename E = typename std::remove_extent<base_type>::type, typename std::enable_if< std::is_array< T >::value, std::nullptr_t >::type = nullptr, typename = internal::skip_trace_tag>
wrap< const E & > operator[] ( std::ptrdiff_t  i) const
inline

base_typeが E[N] の形の場合、要素への参照を返す(const)

  • インデックスが範囲外の場合terminateする。

Friends And Related Symbol Documentation

◆ wrap

template<typename base_type >
template<typename >
friend class wrap
friend

Member Data Documentation

◆ base_

template<typename base_type >
base_type base_
protected

◆ life_

template<typename base_type >
internal::life life_
protected

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