UdonLibrary 1.0.0
機械システム研究部 C++ ライブラリ
読み取り中…
検索中…
一致する文字列を見つけられません
Udon::Optional< T > クラステンプレート

オプショナル型 [詳解]

#include <Udon/Types/Optional.hpp>

公開型

using ValueType = T
 

公開メンバ関数

constexpr Optional () noexcept
 デフォルトコンストラクタ
 
constexpr Optional (NulloptT)
 無効値として構築
 
template<typename U , typename std::enable_if< std::is_constructible< ValueType, U >::value, std::nullptr_t >::type = nullptr>
 Optional (U &&value) noexcept(std::is_nothrow_constructible< ValueType >::value)
 値から構築
 
template<typename U , typename std::enable_if< std::is_constructible< ValueType, const U & >::value, std::nullptr_t >::type = nullptr>
 Optional (const Optional< U > &other) noexcept(std::is_nothrow_constructible< ValueType, U >::value)
 コピーコンストラクタ
 
template<typename U , typename std::enable_if< std::is_constructible< ValueType, U && >::value, std::nullptr_t >::type = nullptr>
 Optional (Optional< U > &&other) noexcept(std::is_nothrow_constructible< ValueType, U >::value)
 ムーブコンストラクタ
 
 ~Optional () noexcept
 デストラクタ
 
Optionaloperator= (NulloptT) noexcept
 無効値代入演算子
 
template<typename U , typename std::enable_if< std::is_constructible< ValueType, U >::value and std::is_assignable< ValueType, U >::value, std::nullptr_t >::type = nullptr>
Optionaloperator= (U &&value) noexcept(std::is_nothrow_constructible< ValueType, U >::value and std::is_nothrow_assignable< ValueType, U >::value)
 値代入演算子
 
template<typename U , typename std::enable_if< std::is_constructible< ValueType, const U & >::value and std::is_assignable< ValueType, const U & >::value, std::nullptr_t >::type = nullptr>
Optionaloperator= (const Optional< U > &other) noexcept(std::is_nothrow_constructible< ValueType, U >::value and std::is_nothrow_assignable< ValueType, U >::value)
 コピー代入演算子
 
template<typename U , typename std::enable_if< std::is_constructible< ValueType, U && >::value and std::is_assignable< ValueType, U && >::value, std::nullptr_t >::type = nullptr>
Optionaloperator= (Optional< U > &&other) noexcept(std::is_nothrow_constructible< ValueType, U >::value and std::is_nothrow_assignable< ValueType, U >::value)
 ムーブ代入演算子
 
constexpr operator bool () const noexcept
 値が有効か
 
constexpr bool hasValue () const noexcept
 値が有効か
 
ValueTypevalue () &
 値を取得
 
const ValueTypevalue () const &
 値を取得
 
ValueType && value () &&
 値を取得
 
const ValueType && value () const &&
 値を取得
 
ValueTypeoperator* () &
 値を取得
 
const ValueTypeoperator* () const &
 値を取得
 
ValueType && operator* () &&
 値を取得
 
const ValueType && operator* () const &&
 値を取得
 
ValueTypeoperator-> ()
 
const ValueTypeoperator-> () const
 
template<typename U >
constexpr ValueType valueOr (U &&defaultValue) const &
 有効であれば自身を、無効であればデフォルト値を取得する
 
template<typename U >
constexpr ValueType valueOr (U &&defaultValue) &&
 有効であれば自身を、無効であればデフォルト値を取得する
 
void swap (Optional &other) noexcept(/*std::is_nothrow_swappable< ValueType >::value and */std::is_nothrow_move_assignable< ValueType >::value)
 他のOptionalと値を交換する
 
template<typename U = ValueType, typename std::enable_if< std::is_trivially_destructible< U >::value, std::nullptr_t >::type = nullptr>
void reset () noexcept(std::is_nothrow_destructible< ValueType >::value)
 無効状態にする (トリビアルな型)
 
template<typename U = ValueType, typename std::enable_if< not std::is_trivially_destructible< U >::value, std::nullptr_t >::type = nullptr>
void reset () noexcept(std::is_nothrow_destructible< ValueType >::value)
 無効状態にする (非トリビアルな型)
 
void show () const noexcept
 値を表示
 

フレンド

template<typename >
class Optional
 
bool operator== (const Optional &lhs, const Optional &rhs) noexcept
 等価演算子
 
bool operator!= (const Optional &lhs, const Optional &rhs) noexcept
 非等価演算子
 
bool operator< (const Optional &lhs, const Optional &rhs) noexcept
 比較演算子
 
bool operator> (const Optional &lhs, const Optional &rhs) noexcept
 比較演算子
 
bool operator>= (const Optional &lhs, const Optional &rhs) noexcept
 比較演算子
 
bool operator<= (const Optional &lhs, const Optional &rhs) noexcept
 比較演算子
 
template<typename CharType >
std::basic_ostream< CharType > & operator<< (std::basic_ostream< CharType > &os, const Optional &opt)
 std::basic_ostream への出力
 

詳解

template<typename T>
class Udon::Optional< T >

オプショナル型

覚え書き
C++17のstd::optionalの模倣
テンプレート引数
T保持する値の型

型定義メンバ詳解

◆ ValueType

template<typename T >
using Udon::Optional< T >::ValueType = T

構築子と解体子

◆ Optional() [1/5]

template<typename T >
Udon::Optional< T >::Optional ( )
inlineconstexprnoexcept

デフォルトコンストラクタ

◆ Optional() [2/5]

template<typename T >
Udon::Optional< T >::Optional ( NulloptT )
inlineconstexpr

無効値として構築

引数

◆ Optional() [3/5]

template<typename T >
template<typename U , typename std::enable_if< std::is_constructible< ValueType, U >::value, std::nullptr_t >::type = nullptr>
Udon::Optional< T >::Optional ( U && value)
inlinenoexcept

値から構築

引数
value

◆ Optional() [4/5]

template<typename T >
template<typename U , typename std::enable_if< std::is_constructible< ValueType, const U & >::value, std::nullptr_t >::type = nullptr>
Udon::Optional< T >::Optional ( const Optional< U > & other)
inlinenoexcept

コピーコンストラクタ

覚え書き
同じ型を持つOptionalから構築する場合、このコンストラクタは呼ばれず、暗黙定義のコピーコンストラクタが呼ばれる
引数
other

◆ Optional() [5/5]

template<typename T >
template<typename U , typename std::enable_if< std::is_constructible< ValueType, U && >::value, std::nullptr_t >::type = nullptr>
Udon::Optional< T >::Optional ( Optional< U > && other)
inlinenoexcept

ムーブコンストラクタ

覚え書き
同じ型を持つOptionalから構築する場合、このコンストラクタは呼ばれず、暗黙定義のムーブコンストラクタが呼ばれる
引数
other

◆ ~Optional()

template<typename T >
Udon::Optional< T >::~Optional ( )
inlinenoexcept

デストラクタ

関数詳解

◆ hasValue()

template<typename T >
bool Udon::Optional< T >::hasValue ( ) const
inlineconstexprnoexcept

値が有効か

戻り値
有効ならtrue

◆ operator bool()

template<typename T >
Udon::Optional< T >::operator bool ( ) const
inlineexplicitconstexprnoexcept

値が有効か

戻り値
有効ならtrue

◆ operator*() [1/4]

template<typename T >
ValueType & Udon::Optional< T >::operator* ( ) &
inline

値を取得

覚え書き
値が無効な場合は例外を投げる
戻り値

◆ operator*() [2/4]

template<typename T >
ValueType && Udon::Optional< T >::operator* ( ) &&
inline

値を取得

覚え書き
値が無効な場合は例外を投げる
戻り値

◆ operator*() [3/4]

template<typename T >
const ValueType & Udon::Optional< T >::operator* ( ) const &
inline

値を取得

覚え書き
値が無効な場合は例外を投げる
戻り値

◆ operator*() [4/4]

template<typename T >
const ValueType && Udon::Optional< T >::operator* ( ) const &&
inline

値を取得

覚え書き
値が無効な場合は例外を投げる
戻り値

◆ operator->() [1/2]

template<typename T >
ValueType * Udon::Optional< T >::operator-> ( )
inline

◆ operator->() [2/2]

template<typename T >
const ValueType * Udon::Optional< T >::operator-> ( ) const
inline

◆ operator=() [1/4]

template<typename T >
template<typename U , typename std::enable_if< std::is_constructible< ValueType, const U & >::value and std::is_assignable< ValueType, const U & >::value, std::nullptr_t >::type = nullptr>
Optional & Udon::Optional< T >::operator= ( const Optional< U > & other)
inlinenoexcept

コピー代入演算子

引数
other

◆ operator=() [2/4]

template<typename T >
Optional & Udon::Optional< T >::operator= ( NulloptT )
inlinenoexcept

無効値代入演算子

引数

return

◆ operator=() [3/4]

template<typename T >
template<typename U , typename std::enable_if< std::is_constructible< ValueType, U && >::value and std::is_assignable< ValueType, U && >::value, std::nullptr_t >::type = nullptr>
Optional & Udon::Optional< T >::operator= ( Optional< U > && other)
inlinenoexcept

ムーブ代入演算子

引数
other

◆ operator=() [4/4]

template<typename T >
template<typename U , typename std::enable_if< std::is_constructible< ValueType, U >::value and std::is_assignable< ValueType, U >::value, std::nullptr_t >::type = nullptr>
Optional & Udon::Optional< T >::operator= ( U && value)
inlinenoexcept

値代入演算子

引数
other
戻り値
*this

◆ reset() [1/2]

template<typename T >
template<typename U = ValueType, typename std::enable_if< std::is_trivially_destructible< U >::value, std::nullptr_t >::type = nullptr>
void Udon::Optional< T >::reset ( )
inlinenoexcept

無効状態にする (トリビアルな型)

覚え書き
Tが非トリビアルな型で、値が有効な場合はデストラクタを呼ぶ

◆ reset() [2/2]

template<typename T >
template<typename U = ValueType, typename std::enable_if< not std::is_trivially_destructible< U >::value, std::nullptr_t >::type = nullptr>
void Udon::Optional< T >::reset ( )
inlinenoexcept

無効状態にする (非トリビアルな型)

覚え書き
Tが非トリビアルな型で、値が有効な場合はデストラクタを呼ぶ

◆ show()

template<typename T >
void Udon::Optional< T >::show ( ) const
inlinenoexcept

値を表示

◆ swap()

template<typename T >
void Udon::Optional< T >::swap ( Optional< T > & other)
inlinenoexcept

他のOptionalと値を交換する

◆ value() [1/4]

template<typename T >
ValueType & Udon::Optional< T >::value ( ) &
inline

値を取得

覚え書き
値が無効な場合は例外を投げる
戻り値

◆ value() [2/4]

template<typename T >
ValueType && Udon::Optional< T >::value ( ) &&
inline

値を取得

覚え書き
値が無効な場合は例外を投げる
戻り値

◆ value() [3/4]

template<typename T >
const ValueType & Udon::Optional< T >::value ( ) const &
inline

値を取得

覚え書き
値が無効な場合は例外を投げる
戻り値

◆ value() [4/4]

template<typename T >
const ValueType && Udon::Optional< T >::value ( ) const &&
inline

値を取得

覚え書き
値が無効な場合は例外を投げる
戻り値

◆ valueOr() [1/2]

template<typename T >
template<typename U >
ValueType Udon::Optional< T >::valueOr ( U && defaultValue) &&
inlineconstexpr

有効であれば自身を、無効であればデフォルト値を取得する

引数
defaultValueデフォルト値
戻り値

◆ valueOr() [2/2]

template<typename T >
template<typename U >
ValueType Udon::Optional< T >::valueOr ( U && defaultValue) const &
inlineconstexpr

有効であれば自身を、無効であればデフォルト値を取得する

引数
defaultValueデフォルト値
戻り値

フレンドと関連関数の詳解

◆ operator!=

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

非等価演算子

引数
lhs
rhs

◆ operator<

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

比較演算子

引数
lhs
rhs

◆ operator<<

template<typename T >
template<typename CharType >
std::basic_ostream< CharType > & operator<< ( std::basic_ostream< CharType > & os,
const Optional< T > & opt )
friend

std::basic_ostream への出力

テンプレート引数
CharType
引数
os
opt
戻り値

◆ operator<=

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

比較演算子

引数
lhs
rhs

◆ operator==

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

等価演算子

引数
lhs
rhs

◆ operator>

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

比較演算子

引数
lhs
rhs

◆ operator>=

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

比較演算子

引数
lhs
rhs

◆ Optional

template<typename T >
template<typename >
friend class Optional
friend

このクラス詳解は次のファイルから抽出されました: