C 언어의 경우 컴파일러는 기본 인수 승격을 호출합니다. 호출 된 함수에 프로토 타입이없는 경우입니다.언제 기본 인수 프로모션이 발생합니까?
하지만 C++은 어떻습니까? 기본 인수 프로모션은 언제 발생합니까? 에서는
C++ 11 표준 5.2.2/7
주어진 인수에 대한 파라미터는 없다
는 인수 수신 함수 값을 얻을 수있는 방식으로 전달 이다 va_arg (18.10)를 호출하여 인수의 [참고 :이 단락 은 함수 매개 변수 팩에 전달 된 인수에는 적용되지 않습니다. 함수 매개 변수 팩은 템플릿 인스턴스화 중 (14.5.3) 동안 확장되므로 함수 템플릿 전문화가 실제로 호출 될 때 각 인수에는 해당 매개 변수가 있습니다. -end note] 인수 식에서 행간 대 값 (4.1), 배열 대 포인터 (4.2) 및 함수 - 포인터 (4.3) 표준 변환이 수행됩니다. std :: nullptr_t 형식 (가능하면 cv 한정)의 형식은 void * (4.10) 형식으로 변환됩니다. 이 변환 후에 인수에 산술, 열거 형, 포인터, 멤버에 대한 포인터 또는 클래스 형식이 없으면 프로그램이 잘못 구성됩니다. 잠재적으로 평가 된 클래스 유형의 인수 (9 절) 중요하지 않은 복사 생성자, 간단한 이동 생성자 또는 중요하지 않은 소멸자가 해당 매개 변수없이 전달되면 은 구현 정의에서 조건부 지원 됨 의미론. 인수가 정수 승격 (4.5) 또는 부동 소수점 승격 (4.6) 인 의 영향을받는 부동 소수점 형식의 정수 또는 열거 형을 갖는 경우 인수의 값은 이 승격 된 전화하기 전에 입력하십시오. 이 프로모션은 기본 인수 프로모션이라고하는 입니다.
이 단락은 기본 인수 승격이 언제 발생하는지 아직 지정하지 않습니다. 이 단락은 명확한 논리없이 너무 많이 말할 수 있습니다. 나는 논리를 개괄하려고 노력했지만 실패했다. va_arg을 호출하는 에 익숙하지 않습니다.
나를 도와주세요.