コンテナー全体の操作

安全性

これらの操作は、enumerable_thread_specific の同じインスタンスで同時に呼び出してはなりません。

次の表は、このテンプレート・クラスのメンバーの詳細な情報を提供します。
メンバー 説明
enumerable_thread_specific()

enumerable_thread_specific を作成します (各スレッドローカル要素はデフォルト設定で作成されます)。

template<typename Finit> enumerable_thread_specific( Finit finit )

enumerable_thread_specific を作成します (スレッドローカル要素は finit() の結果をコピーして作成されるようにします)。

finit() 式は複数のスレッドで同時かつ安全に評価できなければなりません。スレッドローカル要素が作成されるたびに評価されます。

C++11 仕様: このコンストラクターは、finit() が有効式の場合のみ利用できます (オーバーロードで利用できます)。

enumerable_thread_specific( const T& exemplar )

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 を破棄して再作成する代わりに消去を使用するパフォーマンス上の利点はありません。