어떤 링크를 말씀하시는지 잘 모르겠습니다. 처음에는 l-값 참조(MQL에서 사용 가능)가 모든 요구 사항을 충족하지 못한다는 이야기가 있었는데, 이는 상수 또는 표현식 값을 그러한 함수에 전달할 수 없음으로 입증되었습니다. 이러한 목적을 위해 다른 모든 유형을 허용하는 r-값 참조가 필요합니다. 따라서 r-값과 l-값에 대해 두 개의 오버로드된 함수를 조합하면 출처에 관계없이 모든 유형의 인수가 허용됩니다.
상수는 어디에도 저장되지 않고 즉석에서 생성된다고 말씀하셨는데, 이는 (C ++와 달리) l-value가 아닌 r-value로 전송되어야 함을 의미합니다. 어떤 형태로 해석되는지에 근본적인 차이는 없으며, 가장 중요한 것은 함수에서 받아들일 수 있다는 것입니다.
void f( int ) {}
void f( constint &) {}
voidOnStart ()
{
constint x = 0 ;
f(x); // 'f' - ambiguous call to overloaded function with the same parameters
}
그리고 일반적으로 값보다 참조로 무언가를 전달하는 것이 더 편리하기 때문입니다.
방법이 템플릿(술이 실제로 나간 것)인 경우 현재 동작은 단순히 정상적으로 쓰기를 허용하지 않습니다.
언어에 r-값 으로 인수를 전달하는 기능을 추가하는 것에 대해 어떻게 생각하십니까? 이렇게 하면 모든 문제가 즉시 해결되고 모든 유형에 대한 범용 컨테이너를 만들 수 있습니다.
처럼? ) 범용 컨테이너의 경우 링크와 화살표가 필요하지만 그게 다가 아닙니다.
여기에서 일반 사용자는 r-value를 수행하는 사람이 아닙니다.
언어에 r-값 으로 인수를 전달하는 기능을 추가하는 것에 대해 어떻게 생각하십니까? 이렇게 하면 모든 문제가 즉시 해결되고 모든 유형에 대한 범용 컨테이너를 만들 수 있습니다. 특히 위의 방법은 r-값에 대해 오버로드됩니다.
이것은 정확히 모든 STL 컨테이너에서 구현되는 것입니다.
그리고 두 번째 플러스: 이동 생성자 를 설정할 수 있습니다. 이제 이것은 특히 unique_ptr 스마트 포인터 및 자체 내부에 특정 고유 리소스를 독점적으로 저장하도록 설계된 기타 클래스의 구현에 대해 매우 부족합니다. 일반 복사 생성자는 허용되지 않습니다.
그러면 참조로 매개변수를 전달하는 요점은 무엇입니까?
그러면 참조로 매개변수를 전달하는 요점은 무엇입니까?
그러면 참조로 매개변수를 전달하는 요점은 무엇입니까?
어떤 링크를 말씀하시는지 잘 모르겠습니다. 처음에는 l-값 참조(MQL에서 사용 가능)가 모든 요구 사항을 충족하지 못한다는 이야기가 있었는데, 이는 상수 또는 표현식 값을 그러한 함수에 전달할 수 없음으로 입증되었습니다. 이러한 목적을 위해 다른 모든 유형을 허용하는 r-값 참조가 필요합니다. 따라서 r-값과 l-값에 대해 두 개의 오버로드된 함수를 조합하면 출처에 관계없이 모든 유형의 인수가 허용됩니다.
상수는 어디에도 저장되지 않고 즉석에서 생성된다고 말씀하셨는데, 이는 (C ++와 달리) l-value가 아닌 r-value로 전송되어야 함을 의미합니다. 어떤 형태로 해석되는지에 근본적인 차이는 없으며, 가장 중요한 것은 함수에서 받아들일 수 있다는 것입니다.
상수는 어디에도 저장되지 않고 즉석에서 생성된다고 말씀하셨는데, 이는 (C ++와 달리) l-value가 아닌 r-value로 전송되어야 함을 의미합니다. 어떤 형태로 해석되는지에 근본적인 차이는 없으며, 가장 중요한 것은 함수에서 받아들일 수 있다는 것입니다.
음, 실제로 r-값 참조는 이동이 수행될 대상의 존재를 의미합니다. 저것들. 임시 개체는 모두 동일하게 생성되어야 합니다.
음, 실제로 r-값 참조는 이동이 수행될 대상의 존재를 의미합니다. 저것들. 임시 개체는 모두 동일하게 생성되어야 합니다.
물론 그 물체는 항상 어딘가에 있습니다. 나는 이 객체가 즉석에서 생성된다고 썼습니다. 일시적인.
그러나 나는 Slava가 무엇을 요구했는지 이해하는 것 같습니다. 그는 임시 객체를 가치로 취할 수 있는데 왜 참조로 임시 객체를 취하는지 의미했습니다.
따라서 요점은 한 범위의 참조와 값에 대해 동시에 함수를 오버로드하는 것이 불가능하다는 것입니다.
보편적인 솔루션을 작성하는 데 문제가 있습니다. 그리고 값을 r-값으로 바꾸면 작동하는 버전이 나옵니다.
template < typename T> void f(T && ) { } template < typename T> void f(T const &) { }그는 임시 객체를 가치로 취할 수 있는데 왜 참조로 임시 객체를 취하는지 의미했습니다.
왜냐하면
그리고 일반적으로 값보다 참조로 무언가를 전달하는 것이 더 편리하기 때문입니다.
방법이 템플릿(술이 실제로 나간 것)인 경우 현재 동작은 단순히 정상적으로 쓰기를 허용하지 않습니다.
방법이 템플릿(술이 실제로 나간 것)인 경우 현재 동작은 단순히 정상적으로 쓰기를 허용하지 않습니다.
보편적인 솔루션을 작성하는 데 문제가 있습니다. 그리고 값을 r-value로 바꾸면 작동하는 버전이 나옵니다.
설마 )
이동 의미는 이동 중인 객체에 내부를 제거하지 않도록 지시하는 것을 포함합니다. 객체가 const이면 변경 가능한 클래스 멤버 가 필요하고 mql은 이를 지원하지 않습니다.
설마 )
이동 의미는 이동 중인 객체에 내부를 제거하지 않도록 지시하는 것을 포함합니다. 객체가 const이면 변경 가능한 클래스 멤버 가 필요하고 mql은 이를 지원하지 않습니다.