참조 매개변수 및 상수 표현식
제공된 C 코드에서 연결 함수는 std::array 유형의 두 참조 매개변수를 받습니다. 그러나 컴파일 중에 발생한 오류는 배열의 크기 멤버 함수와 관련되어 있으며 이는 참조 특성으로 인해 상수 표현식으로 간주되지 않습니다.
C 표준에 따르면 코어 상수 표현식은 다음으로 평가되지 않는 표현식으로 정의됩니다.
id 표현식(예: 참조) 참조 유형의 변수 또는 데이터 멤버에 대한 참조:
이 경우 참조 매개변수는 배열은 이러한 기준 중 어느 것도 충족하지 않습니다. 선행 초기화가 없으면 참조를 상수 표현식으로 평가할 수 없습니다.
따라서 크기 멤버 함수가 참조 매개변수(예: data1.size())에서 호출되므로, 상수 표현식으로 간주할 수 없어 컴파일 오류가 발생합니다.
이 문제를 해결하려면 템플릿 매개변수 S1 및 S2를 직접 사용하여 크기를 결정하는 것이 좋습니다. 참조 매개변수의 크기 멤버 함수에 의존하는 대신 결과 배열의:
auto result = std::array<uint8_t, S1 + S2>{};
위 내용은 C 함수에서 `std::array` 참조 매개변수를 사용하면 상수 표현식 평가가 방지되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!