C++相談室 part60
at TECH
144:139
08/01/25 13:52:28
以下 C++0x の話で現行の言語規格とは一切関係ないです.スレ違いですいません.
>>141
あ,いえ,自分が>>139で指摘したかったのはたとえば
template<typename T>
void f(T &&x);
があったときに, f を左辺値で呼び出すと T が左辺値参照型で specialize されて
f のパラメタの型が左辺値参照型になる,つまり
int i;
f(i); // T = int & として f が specialization される.
// 結果 f のパラメタの型が & && -> & の decay を受けて int & と同等になる
f(42); // T = int として f が specialization される.
// 結果 f のパラメタの型が右辺値参照型 int && になる
ということです.これによって f の引数が非 const 左辺値でも const 左辺値でも右辺値でも
問題なく受けられるようになるということを指摘したかったんです.
で,上記の仕様 (引数が左辺値か右辺値かで
テンプレートパラメタ T が参照型かそうでないかの違いが生じる) から,
f の実装内部において f が左辺値で呼ばれたのか右辺値で呼ばれたのかの識別も可能となります.
この 右辺値参照・参照型の decay ルール・関数テンプレートにおける引数推論規則 の組み合わせで
the forwarding problem が完全に解けるというのが現在の提案の骨子だったかと思います.
次ページ続きを表示1を表示最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5017日前に更新/95 KB
担当:undef