C++ Q&A

Q.「rvalue参照自体はlvalue」ってどういうこと?

A.rvalue参照(変数に名前が付いていたらその変数)自体は(名前を持っているので名前を持っているものはその型が何だろうと)lvalue であるということです変数の型の宣言が何だろうととにかく名前の付いているものが lvalue で、名前の付いていないものが r…

Q.ちゃんと T&& を渡してるのになぜか T& の方が呼ばれるんだけどなんで?

void foo( cbar&& ); void foo( cbar& ); void baz( cbar&& bar ){ foo( bar ); // なぜか cbar& の方が呼ばれる } A. cbar&& の方を呼んでもらうためには std::move が必要です void baz( cbar&& bar ){ foo( std::move(bar)); // cbar&& の方が呼ばれる } …