참조로 임시 객체와 args가있는 규칙
문제
수업이 있다고 말합니다.
class A
{
public:
A() {}
};
그리고 기능 :
void x(const A & s) {}
그리고 나는한다 :
x(A());
누군가가 임시 대상을 참조하여 전달하는 것에 관한 규칙을 저에게 설명해 주시겠습니까? 컴파일러가 허용하는 내용, const가 필요한 곳, 암시 적 사본이 발생하는 경우 등이 발생하는 것 등의 관점에서, 주위를 연주하면, 당신은 의미가있는 const가 필요한 것처럼 보이지만이 모든 것에 관한 공식적인 규칙이 있습니까?
감사!
해결책
공식적인 규칙이 있습니다 - C ++ 표준 (섹션 13.3.3.1.4 관심이있는 경우 13.3.3.1.4)은 임시가 Const 참조에만 바인딩 될 수 있다고 말합니다. 오류.
다른 팁
Herb Sutter는 여기에서 설명하는 훌륭한 일을합니다. http://www.gotw.ca/gotw/081.htm
x ()는 임시 A에 대한 const 참조를 취하거나 x ()는 a- 값을 가져와야합니다.
제휴하지 않습니다 StackOverflow