때때로 기본 유형을 기본 클래스로 컴파일하는 이유는 무엇입니까?

Nerp

이것은 컴파일됩니다 (GCC 9 및 Clang 9로 테스트 됨).

template<typename U>
struct inherit : U { };

int test(inherit<int> arg);

그러나 이것은 그렇지 않습니다.

int test(inherit<int> arg) { }

첫 번째는 왜 컴파일됩니까?

NathanOliver

int test(inherit<int> arg);단지 선언 일뿐입니다. 따라서 우리는 inherit<int>아직 알 필요가 없습니다 . 그 때문에 컴파일러는 그것을 놓아 줄 것입니다.

int test(inherit<int> arg) { }지금 정의를 가지고 지금 우리가 알아야 할 inherit<int>그래서 arg파괴 될 때 함수가 종료합니다. 이 시점에서 템플릿이 인스턴스화되고 유효하지 않기 때문에 오류가 발생합니다.

선언을 무시하는 또 다른 이유 inherit는 나중에 int전문화 될 수 있고 다음과 같은 것을 가질 수 있기 때문에 해당 전문화가 실제로 유효한 클래스가 될 수 있다는 것입니다.

template<>
struct inherit<int> { };

당신은 사이 추가한다면 int test(inherit<int> arg);하고 int test(inherit<int> arg) { }있기 때문에 다음 코드는 이제 컴파일 할 inherit<int>지금 유효한 유형입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

기본 유형을 기본 클래스로 사용하는 C ++

분류에서Dev

컴파일러가 프로토콜의 기본 코드를 보지 못하는 이유는 무엇입니까?

분류에서Dev

기본 클래스를 개인적으로 상속하고 싶을 때 이름을 공개하는 이유는 무엇입니까?

분류에서Dev

유닛을 독립형 프로젝트로 변환 할 때 컴파일러가 "내보내기"를 인식하지 못하는 이유는 무엇입니까?

분류에서Dev

cc (C 컴파일러) 및 유사한 유틸리티가 기본적으로 표준 스트림을 사용하지 않는 이유는 무엇입니까?

분류에서Dev

기본 유형을 T (기본 유형이기도 함)로 캐스팅하는 것은 Rust입니다.

분류에서Dev

두 개의 함수가있을 때 컴파일러가 오류를 표시하지 않는 이유 하나는 기본 클래스를 사용하고 다른 하나는 매개 변수로 파생 된 클래스를 사용합니까?

분류에서Dev

Serde가 기본적으로 Rc 및 Arc 유형을 지원하지 않는 이유는 무엇입니까?

분류에서Dev

SQL Server 쿼리 최적화 프로그램이 때때로 명백한 클러스터 된 기본 키를 간과하는 이유는 무엇입니까?

분류에서Dev

이 코드가 기본 클래스를 C ++의 파생 클래스로 캐스팅하지 않는 이유는 무엇입니까?

분류에서Dev

다른 enum의 기본 유형으로 enum을 가질 수없는 이유는 무엇입니까?

분류에서Dev

Rust에서 바이트 배열을 기본 유형으로 캐스팅하는 방법은 무엇입니까?

분류에서Dev

기본 유형 (또는 클래스) (있는 경우)으로 datetime이있는 프로그래밍 언어는 무엇입니까?

분류에서Dev

FreeBSD를 새로 설치할 때 ZFS가 기본값이 아닌 이유는 무엇입니까?

분류에서Dev

Array.sorted ()에 기본 클로저가없는 이유는 무엇입니까?

분류에서Dev

함수에 대한 기본 인수로 빈 목록이있을 때 파이썬이이 동작을 표시하는 이유는 무엇입니까?

분류에서Dev

공용 가상으로 상속 할 때 클래스 크기가 증가하는 이유는 무엇입니까?

분류에서Dev

이 이중 유형 변수가 함수 매개 변수로 전달 될 때 기본적으로 int가되는 이유는 무엇입니까?

분류에서Dev

NullPointerException이 발생하는 이유는 무엇입니까? (기본 GPS 로직)

분류에서Dev

Apple Silicon에서 컴파일 된 기본 애플리케이션이 때때로 arm64로 빌드되고 때로는 x86_64로 빌드되는 이유는 무엇입니까?

분류에서Dev

읽기가 기본 IFS와 단일 변수로 개행을 추가하는 이유는 무엇입니까?

분류에서Dev

이 컴퓨터는 앞으로 기울일 때만 작동하는 이유는 무엇입니까?

분류에서Dev

템플릿 클래스 자체 클래스를 기본 템플릿 유형으로 전달하는 방법은 무엇입니까?

분류에서Dev

PHP가 시스템 기본 로케일 설정을 대신하지 않는 이유는 무엇입니까?

분류에서Dev

기본 Dialogrc 파일이 화면을 단색으로 만드는 이유는 무엇입니까?

분류에서Dev

각도 날짜 파이프가 Intl.DateTimeFormat과 같은 로케일 언어 기본 형식을 지원하지 않는 이유는 무엇입니까?

분류에서Dev

내 클래스가 기본 구성이 아닌 이유는 무엇입니까?

분류에서Dev

unique-ptr이 기본 클래스를 가상 파괴 가능으로 확인하지 않는 이유는 무엇입니까?

분류에서Dev

C ++에서 기본 클래스에 대한 포인터가 주어 졌을 때 파생 클래스 개체에 대한 오버로드 된 함수가 호출되지 않는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    기본 유형을 기본 클래스로 사용하는 C ++

  2. 2

    컴파일러가 프로토콜의 기본 코드를 보지 못하는 이유는 무엇입니까?

  3. 3

    기본 클래스를 개인적으로 상속하고 싶을 때 이름을 공개하는 이유는 무엇입니까?

  4. 4

    유닛을 독립형 프로젝트로 변환 할 때 컴파일러가 "내보내기"를 인식하지 못하는 이유는 무엇입니까?

  5. 5

    cc (C 컴파일러) 및 유사한 유틸리티가 기본적으로 표준 스트림을 사용하지 않는 이유는 무엇입니까?

  6. 6

    기본 유형을 T (기본 유형이기도 함)로 캐스팅하는 것은 Rust입니다.

  7. 7

    두 개의 함수가있을 때 컴파일러가 오류를 표시하지 않는 이유 하나는 기본 클래스를 사용하고 다른 하나는 매개 변수로 파생 된 클래스를 사용합니까?

  8. 8

    Serde가 기본적으로 Rc 및 Arc 유형을 지원하지 않는 이유는 무엇입니까?

  9. 9

    SQL Server 쿼리 최적화 프로그램이 때때로 명백한 클러스터 된 기본 키를 간과하는 이유는 무엇입니까?

  10. 10

    이 코드가 기본 클래스를 C ++의 파생 클래스로 캐스팅하지 않는 이유는 무엇입니까?

  11. 11

    다른 enum의 기본 유형으로 enum을 가질 수없는 이유는 무엇입니까?

  12. 12

    Rust에서 바이트 배열을 기본 유형으로 캐스팅하는 방법은 무엇입니까?

  13. 13

    기본 유형 (또는 클래스) (있는 경우)으로 datetime이있는 프로그래밍 언어는 무엇입니까?

  14. 14

    FreeBSD를 새로 설치할 때 ZFS가 기본값이 아닌 이유는 무엇입니까?

  15. 15

    Array.sorted ()에 기본 클로저가없는 이유는 무엇입니까?

  16. 16

    함수에 대한 기본 인수로 빈 목록이있을 때 파이썬이이 동작을 표시하는 이유는 무엇입니까?

  17. 17

    공용 가상으로 상속 할 때 클래스 크기가 증가하는 이유는 무엇입니까?

  18. 18

    이 이중 유형 변수가 함수 매개 변수로 전달 될 때 기본적으로 int가되는 이유는 무엇입니까?

  19. 19

    NullPointerException이 발생하는 이유는 무엇입니까? (기본 GPS 로직)

  20. 20

    Apple Silicon에서 컴파일 된 기본 애플리케이션이 때때로 arm64로 빌드되고 때로는 x86_64로 빌드되는 이유는 무엇입니까?

  21. 21

    읽기가 기본 IFS와 단일 변수로 개행을 추가하는 이유는 무엇입니까?

  22. 22

    이 컴퓨터는 앞으로 기울일 때만 작동하는 이유는 무엇입니까?

  23. 23

    템플릿 클래스 자체 클래스를 기본 템플릿 유형으로 전달하는 방법은 무엇입니까?

  24. 24

    PHP가 시스템 기본 로케일 설정을 대신하지 않는 이유는 무엇입니까?

  25. 25

    기본 Dialogrc 파일이 화면을 단색으로 만드는 이유는 무엇입니까?

  26. 26

    각도 날짜 파이프가 Intl.DateTimeFormat과 같은 로케일 언어 기본 형식을 지원하지 않는 이유는 무엇입니까?

  27. 27

    내 클래스가 기본 구성이 아닌 이유는 무엇입니까?

  28. 28

    unique-ptr이 기본 클래스를 가상 파괴 가능으로 확인하지 않는 이유는 무엇입니까?

  29. 29

    C ++에서 기본 클래스에 대한 포인터가 주어 졌을 때 파생 클래스 개체에 대한 오버로드 된 함수가 호출되지 않는 이유는 무엇입니까?

뜨겁다태그

보관