std::experimental::function<R(Args...)>:: function
|
function
(
)
noexcept
;
|
(1) | (ライブラリファンダメンタルTS) |
|
function
(
std::
nullptr_t
)
noexcept
;
|
(2) | (ライブラリファンダメンタルTS) |
|
function
(
const
function
&
other
)
;
|
(3) | (ライブラリファンダメンタルTS) |
|
function
(
function
&&
other
)
;
|
(4) | (ライブラリファンダメンタルTS) |
|
template
<
class
F
>
function ( F f ) ; |
(5) | (ライブラリファンダメンタルTS) |
| (6) | ||
|
template
<
class
Alloc
>
function ( std:: allocator_arg_t , const Alloc & alloc ) noexcept ; |
(ライブラリファンダメンタルTS) | |
|
function
(
std::
allocator_arg_t
,
const allocator_type & alloc ) noexcept ; |
(ライブラリファンダメンタルTS v3) | |
| (7) | ||
|
template
<
class
Alloc
>
function
(
std::
allocator_arg_t
,
const
Alloc
&
alloc,
|
(ライブラリファンダメンタルTS) | |
|
function
(
std::
allocator_arg_t
,
const
allocator_type
&
alloc,
std:: nullptr_t ) noexcept ; |
(ライブラリファンダメンタルTS v3) | |
| (8) | ||
|
template
<
class
Alloc
>
function
(
std::
allocator_arg_t
,
const
Alloc
&
alloc,
|
(ライブラリファンダメンタルTS) | |
|
function
(
std::
allocator_arg_t
,
const
allocator_type
&
alloc,
const function & other ) ; |
(ライブラリファンダメンタルTS v3) | |
| (9) | ||
|
template
<
class
Alloc
>
function
(
std::
allocator_arg_t
,
const
Alloc
&
alloc,
|
(ライブラリファンダメンタルTS) | |
|
function
(
std::
allocator_arg_t
,
const
allocator_type
&
alloc,
function && other ) ; |
(ライブラリファンダメンタルTS v3) | |
| (10) | ||
|
template
<
class
F,
class
Alloc
>
function ( std:: allocator_arg_t , const Alloc & alloc, F f ) ; |
(ライブラリファンダメンタルTS) | |
|
function
(
std::
allocator_arg_t
,
const
allocator_type
&
alloc, F f
)
;
|
(ライブラリファンダメンタルTS v3) | |
std::experimental::function
を様々なソースから構築します。
Args...
と戻り値型
R
に対して
Callable
でない限り、オーバーロード解決に参加しません。
function
が使用する可能性のある内部データ構造のメモリ割り当てに使用される点が異なります。
これらのコンストラクタは
alloc
をタイプ消去アロケータとして扱います(下記参照)。
(ライブラリファンダメンタルTS v3まで)
|
(1-5)による構築後、 this - > get_memory_resource ( ) は構築時に std:: experimental :: pmr :: get_default_resource ( ) と同じ値を返す。 |
(library fundamentals TS)
(until library fundamentals TS v3) |
|
(1-3)および(5)による構築後、 * this はデフォルト構築された std:: pmr :: polymorphic_allocator <> を格納する。 |
(library fundamentals TS v3) |
target が関数ポインタまたは std::reference_wrapper である場合、小規模オブジェクト最適化が保証されます。つまり、これらのターゲットは常に std::experimental::function オブジェクト内に直接格納され、動的メモリ確保は発生しません。その他の大規模オブジェクトは、動的に確保されたストレージ内で構築され、 std::experimental::function オブジェクトによってポインタを通じてアクセスされる可能性があります。
コンストラクタが関数オブジェクト(
std::experimental::function
のインスタンスを含む)をムーブまたはコピーする場合、そのムーブまたはコピーは
アロケータ使用構築
によって行われ、アロケータは
this
-
>
get_memory_resource
(
)
(ライブラリファンダメンタルTS v3まで)
this
-
>
get_allocator
(
)
(ライブラリファンダメンタルTS v3以降)
です。
目次 |
タイプ消去アロケータ
function
のコンストラクタがアロケータ引数
alloc
を受け取る場合、その引数をタイプ消去されたアロケータとして扱います。
function
がメモリ確保に使用するメモリリソースポインタは、以下のようにアロケータ引数(指定された場合)を使用して決定されます:
alloc
の型
|
メモリリソースポインタの値 |
| 存在しない(構築時にアロケータが指定されていない場合) | 構築時の std:: experimental :: pmr :: get_default_resource ( ) の値 |
| std::nullptr_t | 構築時の std:: experimental :: pmr :: get_default_resource ( ) の値 |
|
std:: experimental :: pmr :: memory_resource * に変換可能なポインタ型 |
static_cast < std:: experimental :: pmr :: memory_resource * > ( alloc ) |
|
std::experimental::pmr::polymorphic_allocator の特殊化 |
alloc. resource ( ) |
| Allocator 要件を満たすその他の型 |
std::
experimental
::
pmr
::
resource_adaptor
<
A
>
(
alloc
)
型の値へのポインタ(
A
は
alloc
の型)。このポインタは
function
オブジェクトの生存期間中のみ有効
|
| 上記のいずれにも該当しない場合 | プログラムは不適格(ill-formed) |
パラメータ
| other | - | *thisを初期化するために使用される関数オブジェクト |
| f | - | *thisを初期化するために使用される呼び出し可能オブジェクト |
| alloc | - | 内部メモリ割り当てに使用されるアロケータ |
| 型要件 | ||
-
F
は
Callable
および
CopyConstructible
の要件を満たさなければならない。
|
||
例外
例
|
このセクションは不完全です
理由: 例がありません |