std:: reference_converts_from_temporary
|
定義先ヘッダ
<type_traits>
|
||
|
template
<
class
T,
class
U
>
struct reference_converts_from_temporary ; |
(C++23以降) | |
U
がスカラ型または
cv
修飾された
void
である場合、
V
を
std::
remove_cv_t
<
U
>
とし、それ以外の場合は
U
とする。
T
が参照型であり、仮想的な式
e
が
decltype
(
e
)
が
V
となる場合、変数定義
T ref
=
e
;
が適正であり、かつ
一時オブジェクトをバインド
する場合、メンバ定数
value
を
true
に設定する。それ以外の場合、
value
は
false
となる。
T
がconst修飾(volatile修飾ではない)オブジェクト型への左辺値参照型、または右辺値参照型である場合、
std::
remove_reference_t
<
T
>
と
std::
remove_reference_t
<
U
>
はともに
完全型
、
cv
void
、または
境界不明の配列
でなければならない。そうでない場合、動作は未定義となる。
上記のテンプレートのインスタンス化が、直接的または間接的に不完全型に依存しており、その型が仮に完全化された場合に異なる結果をもたらす可能性がある場合、その動作は未定義です。
プログラムが
std::reference_converts_from_temporary
または
std::reference_converts_from_temporary_v
に対する特殊化を追加する場合、動作は未定義です。
目次 |
ヘルパー変数テンプレート
|
template
<
class
T,
class
U
>
inline
constexpr
bool
reference_converts_from_temporary_v
=
|
(C++23以降) | |
std:: integral_constant から継承
メンバ定数
|
value
[static]
|
true
T
が参照型であり、コピー初期化において
U
値が
T
に束縛可能で、一時オブジェクトが参照に束縛される場合は
false
そうでない場合
(公開静的メンバ定数) |
メンバ関数
|
operator bool
|
オブジェクトを
bool
に変換し、
value
を返す
(公開メンバ関数) |
|
operator()
(C++14)
|
value
を返す
(公開メンバ関数) |
メンバ型
| 型 | 定義 |
value_type
|
bool |
type
|
std:: integral_constant < bool , value > |
注記
std::reference_converts_from_temporary
は、常にダングリング参照を生成する一部のケースを拒否するために使用できます。
例
#include <type_traits> int main() {} static_assert( std::reference_converts_from_temporary_v<int&&, int> == true && std::reference_converts_from_temporary_v<const int&, int> == true && std::reference_converts_from_temporary_v<int&&, int&&> == false && std::reference_converts_from_temporary_v<const int&, int&&> == false && std::reference_converts_from_temporary_v<int&&, long&&> == true && std::reference_converts_from_temporary_v<int&&, long> == true);
関連項目
|
(C++11)
(C++20)
|
型が他の型に変換可能かどうかをチェックする
(クラステンプレート) |
|
(C++17)
(C++23)
|
任意の
Callable
オブジェクトを指定された引数で呼び出す
戻り値の型を指定する可能性あり
(C++23以降)
(関数テンプレート) |
|
(C++11)
|
関数オブジェクトに1つ以上の引数をバインドする
(関数テンプレート) |
|
(C++17)
|
1つ以上の
variant
が保持する引数で指定されたファンクタを呼び出す
(関数テンプレート) |
新しい
std::function
インスタンスを構築する
(
std::function<R(Args...)>
の公開メンバ関数)
|
|
新しい
std::move_only_function
オブジェクトを構築する
(
std::move_only_function
の公開メンバ関数)
|
|
|
タスクオブジェクトを構築する
(
std::packaged_task<R(Args...)>
の公開メンバ関数)
|