C++には lvalue やら rvalue やらたくさんありますが、混乱している人もいるかもしれないのでめちゃくちゃ簡単にまとめておきます。 多分間違ってるところがあると思うので、その時は教えて下さい。よろしくお願いします。 lvalue 簡単にいえば左辺にして代入できるもののことです。*1 named object (名前があるオブジェクト)と言ったほうがいいかもしれませんね。 ( int& foo() { return i; } foo() = 1; とか書けますよね。) template <typename T> void f(T& t) { std::cout << "T&" << std::endl; } // lvalue reference template <typename T> void f(T&& t) { std::cout << "T&&" << std::en