安全性
これらの操作は、enumerable_thread_specific の同じインスタンスで同時に呼び出してはなりません。
メンバー | 説明 |
---|---|
enumerable_thread_specific() | enumerable_thread_specific を作成します (各スレッドローカル要素はデフォルト設定で作成されます)。 |
template<typename Finit> explicit enumerable_thread_specific( Finit finit ) | enumerable_thread_specific を作成します (スレッドローカル要素は finit() の結果をコピーして作成されるようにします)。 注finit() 式は複数のスレッドで同時かつ安全に評価できなければなりません。スレッドローカル要素が作成されるたびに評価されます。 C++11 以降: このコンストラクターは、finit() が有効式の場合のみ利用できます (オーバーロードで利用できます)。 |
explicit enumerable_thread_specific( const T& exemplar ) explicit enumerable_thread_specific( T&& exemplar ) |
各スレッドローカル要素が exemplar からコピーして作成される enumerable_thread_specific を作成します。 注C++11 以降: T の move コンストラクターは exemplar を内部的に格納するために使用できますが、スレッドローカル要素は常にコピーして作成されます。 |
template <typename... Args> enumerable_thread_specific( Args&&... args ); | C++11 以降でサポート。enumerable_thread_specific を作成します (スレッドローカル要素は T(args...) を呼び出して作成されるようにします)。 注このコンストラクターは、args... の最初の引数の型が T または enumerable_thread_specific<T> の場合、あるいは foo() がその型の値 foo の有効式の場合、オーバーロードで利用されません。 |
enumerable_thread_specific ( const enumerable_thread_specific& other ) template<typename Alloc, ets_key_usage_type Cachetype> enumerable_thread_specific( const enumerable_thread_specific <T, Alloc, Cachetype>& other ) |
other のコピーとして enumerable_thread_specific を作成します。値は other の値からコピーされ、同じスレッドが対応します。 |
enumerable_thread_specific ( enumerable_thread_specific&& other ) |
C++11 以降でサポート。other のコンテンツをそのまま移動することにより enumerable_thread_specific を構築します。other は無指定の状態のままですが、安全に破棄することができます。 |
template<typename Alloc, ets_key_usage_type Cachetype> enumerable_thread_specific( enumerable_thread_specific <T, Alloc, Cachetype>&& other ) |
C++11 以降でサポート。要素ごとの move コンストラクターを使用して other の値を移動することにより enumerable_thread_specific を構築し、同じスレッドが対応します。other は無指定の状態のままですが、安全に破棄することができます。 |
~enumerable_thread_specific() | *this のすべての要素を破棄します。このインスタンス用に作成されたすべてのネイティブ TLS キーを破棄します。 |
enumerable_thread_specific& operator=( const enumerable_thread_specific& other ); | other のコンテンツを *this にコピーします。 |
template<typename Alloc, ets_key_usage_type Cachetype> enumerable_thread_specific& operator=( const enumerable_thread_specific<T, Alloc, Cachetype>& other ); | other のコンテンツを *this にコピーします。 注アロケーターおよびキーの使用法の特殊化は、この呼び出しでは変更されません。 |
enumerable_thread_specific& operator=( enumerable_thread_specific&& other ); | C++11 以降でサポート。other のコンテンツをそのまま *this に移動します。other は無指定の状態のままですが、安全に破棄することができます。 |
template<typename Alloc, ets_key_usage_type Cachetype> enumerable_thread_specific& operator=( enumerable_thread_specific<T, Alloc, Cachetype>&& other ); | C++11 以降でサポート。要素ごとの move コンストラクターを使用して other のコンテンツを *this に移動し、同じスレッドが対応します。other は無指定の状態のままですが、安全に破棄することができます。 注アロケーターおよびキーの使用法の特殊化は、この呼び出しでは変更されません。 |
void clear() | *this のすべての要素を破棄します。この実装で使用されるすべてのネイティブ TLS キーを破棄して再作成します。 注現在の実装では、enumerable_thread_specific を破棄して再作成する代わりに消去を使用するパフォーマンス上の利点はありません。 |