2012-03-24 4 views
1

다음은 C++ polymorphism with boost scoped_ptr, 입니다. C++ 인수 차감 규칙을 이해하고 싶습니다. 예를 들어 스마트 포인터와 컨테이너 CONST와 const가 아닌 인수 C++ 인수 대체 규칙

  • 사이,
  • 자동 변환을 사용

    1. C++ 다형성 대체에 대한 규칙이, 임시직은 참조로 전달 될 수있을 때?
    2. 템플릿 인수 공제에서 규칙이 어떻게 다른가요?

    표준에 관련 섹션이있는 경우 해당 섹션도 도움이 될 것입니다.

  • +1

    아주 좋은 질문이지만 매우 광범위합니다. 여러 가지 질문으로 나누고 싶을 수도 있습니다. –

    +0

    확인. 이것을 커뮤니티 위키로 만드는 것이 더 좋은가? 나는 리팩토링을 할 것이다. – ATemp

    +0

    정확히 무엇을 확신하고 있습니까? 교과서가 명확하지 않은 시점은 언제입니까? –

    답변

    0

    나는이 질문이 너무 광범위하고 모든 질문이 무엇인지 이해하지 못한다고 생각합니다. 제레가 내 발사 야.

    1. 템플릿 공제는 기본 클래스 또는 전환에 영향을주지 않습니다. 그것은 정적 유형을 추론합니다. 직접적인 일치가없는 경우에만 변환으로이를 해결할 수 있으며 평소와 같이 하나의 변환 만 적용됩니다. 예를 들어, 전달 된 타입은 미처리 포인터이고, 기대되는 타입은 이것을 찾아야하는 내장 포인터에서 암시 적으로 변환 될 수있는 스마트 포인터입니다.
    2. 값 유형의 경우 constness는 무시됩니다. 참조 또는 포인터 유형의 경우 비 const 포인터 또는 참조는 해당 비 const 버전으로 변환 할 수 있습니다. 그러나 추론 된 튜플에는 cv-qualifird 유형이있는 동일한 함수를 명시 적으로 인스턴스화 할 수는 있지만 cv 한정자는 없습니다. Ab를 추론하면 T&& 다른 규칙이 적용됩니다.
    3. 임시는 const 정규화 된 왼쪽 값 참조 및 오른쪽 값 참조에만 바인딩 할 수 있습니다. 이것은 언어에서 보편적입니다.
    4. 비교 대상은 무엇입니까?