- C++相談室 part114
30 :デフォルトの名無しさん[sage]:2014/08/29(金) 19:44:34.98 ID:kA47mpnV - 右辺値参照のコードって微妙にもどかしくない?
template <typename T> void func(T&& t); ってやって T自身が右辺値の場合も左辺値参照の場合も包括的に扱えるのはいいんだけど、 それをたとえば int に限定したいとかが楽にできない。
|
- C++相談室 part114
33 :デフォルトの名無しさん[sage]:2014/08/29(金) 21:25:54.23 ID:kA47mpnV - >>32
template <typename T> void func(T&& t) { なんたらかんたら std::forward<T>(t); } ってよくやるだろうが。 何のための完全転送だよ?
|
- C++相談室 part114
35 :デフォルトの名無しさん[sage]:2014/08/29(金) 21:37:05.38 ID:kA47mpnV - >>34
std::forward_as_tuple
|
- C++相談室 part114
36 :デフォルトの名無しさん[sage]:2014/08/29(金) 21:39:02.27 ID:kA47mpnV - >>34
ん?「非」const左辺値参照渡し? どっから「非」が出てきた?
|
- C++相談室 part114
37 :デフォルトの名無しさん[sage]:2014/08/29(金) 21:47:16.74 ID:kA47mpnV - >>34
std::make_tuple std::tuple_cat std::make_unique std::make_shared
|
- C++相談室 part114
39 :デフォルトの名無しさん[sage]:2014/08/29(金) 21:56:36.69 ID:kA47mpnV - >>34
vector::emplace_back とかいろいろあるな。自分でも調べてみたら? そもそも T&& 以外に何を使うってんだ...
|
- C++相談室 part114
42 :デフォルトの名無しさん[sage]:2014/08/29(金) 22:59:29.49 ID:kA47mpnV - >>41
>vector自体は左辺値でも右辺値でも完全転送する必要がある それで十分じゃないか。 引数がふたつ以上あって、それぞれ右辺値だったり左辺値だったりする時のことを考えてみれば?
|
- C++相談室 part114
43 :デフォルトの名無しさん[sage]:2014/08/29(金) 23:30:35.43 ID:kA47mpnV - >>41>>32>>34
テンプレートで何か受け取る : 右辺値か左辺値かconstか非constか しかも複数別々 何かする 下に転送 ↓ 受け取る:右辺値か左辺値かconstか非constか不明 何かする 下に転送 ↓ ・・・ ↓ ↓ ↓ T& constT& T&& それぞれオーバーロードして処理 左辺値か右辺値か意味の違いで区別はするが、それは最後の段階でやること多いよ。 その前の段階では一律 T&& になる。 必要になる理由のひとつがこれ。
|