私はT&&
クラスでそれを偶然見つけました、そして関数は異なることを意味します。
機能中:
template<class T> void f(T&& t){}; // t is R or L-value
...
int i=0;
f(i); // t in f is lvalue
f(42); // t in f is rvalue
クラスで:
template<class T>
struct S {
S(T&& t){} // t is only R-value?
};
...
int i;
S<int> ss(i); // compile error - cannot bind lvalue to ‘int&&’
T&& t
これは、クラスにいる場合、t
右辺値のみになることを意味しますか?
これについてもっと情報を得ることができる場所を教えてもらえますか?
L値とR値に対して2つのメソッドオーバーロードを作成する必要があるということですか?
答え
Alfの例が示すようにt
、関数とクラスはLvalueまたはRvalueになります。