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
に対する特殊化を追加する場合、動作は未定義です。
目次ヘルパー変数テンプレート
std:: integral_constant から継承メンバ定数
メンバ関数
メンバ型
注記
例
このコードを実行
#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); 関連項目
|