C++相談室 part60
at TECH
145:139
08/01/25 13:54:25
あと,実際には>>141さんが指摘しているように
名前が付いた右辺値参照は左辺値として扱われるので,
右辺値として渡された f の引数を f の内部で引き続き右辺値として扱うには
明示的に右辺値参照に変換してやらないといけないです.
で,このために std::forward という補助的な関数テンプレートも提案されています.
template<typename T>
T &&forward(typename identity<T>::type &&x){return x;}
template<typename T>
void f(T &&x)
{
g(forward<T>(x)); // f が右辺値で呼ばれている場合, T が非参照型になっているので
// forward の戻り値型が右辺値参照型になり,右辺値として g に渡される.
// f が左辺値で呼ばれている場合, T が参照型になっているので
// forward の戻り値型が左辺値参照型になり,左辺値として g に渡される.
}
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5014日前に更新/95 KB
担当:undef