クラスがあるとします:
class A
{
public:
A() {}
};
そして関数:
void x(const A & s) {}
そして私は:
x(A());
一時オブジェクトの参照による受け渡しに関するルールを誰かに説明してもらえますか? コンパイラが許可するもの、const が必要な場所、暗黙のコピーが発生した場合などに関して、いじってみると、意味のある const が必要なように見えますが、これらすべてに関する正式なルールはありますか?
ありがとう!
正式なルールがあります - C++ 標準 (興味がある場合はセクション 13.3.3.1.4) では、一時は const 参照にのみバインドできると述べられています - 非 const 参照を使用しようとすると、コンパイラはこれにフラグを立てる必要があります。エラー。
Herb Sutter がここで説明しています: http://www.gotw.ca/gotw/081.htm
x() は、一時的な A への const 参照を取るか、または x() は A を値で受け取る必要があります。