新しく追加された右辺値参照( vs2012 express )を試していました。
何だか分かりませんとも。以下のコードを考えると(そのほとんどは std::forward が説明されているc++標準から取られています)。
struct A
{
A(int& i, const float& j):
m_i(i),
m_j(j){}
int& m_i;
const float& m_j;
};
template<class T, class A1, class A2>
T* factory(A1&& a1, A2&& a2)
{
return new T(a1, a2);
}
void test()
{
A* a1 = factory<A>(1, 1.2f);
//How does this work ?
a1->m_i = 2;
}
m_i がどこにバインドされているのかわかりません。
私は基本的に、右辺値参照 (& &&) への左辺値参照を持ちます。これは、ref の折りたたみ規則によって (&) 単なる左辺値参照になります。しかし、何への参照ですか?