정적 함수를 사용하여 정적 멤버 Constexpr 초기화
문제:
정적 함수가 있는 constexpr 멤버, 컴파일 시 계산된 값으로 초기화 시간. 그러나 GCC에서 그렇게 하려고 하면 컴파일 오류가 발생합니다.
초기 시도:
첫 번째 시도에서 정적 constexpr 멤버와 함수를 클래스 정의 내에 배치하여 이전 버전의 GCC에서 컴파일 오류가 발생했습니다. 두 번째 시도에서는 이러한 요소를 클래스 본문 외부로 옮겼지만 이후 버전에서 다시 문제에 직면했습니다.
설명:
C 표준은 constexpr static에 대한 특정 요구 사항을 지정합니다. 데이터 멤버. 이러한 멤버는 중괄호 또는 같음 초기화 프로그램을 사용하여 초기화해야 하며, 여기서 모든 할당은 상수 표현식입니다. "두 번째 시도"에서는 이 형식을 따르지 않았습니다.
해결책:
안타깝게도 정적 함수를 사용하여 constexpr 정적 데이터 멤버를 초기화하는 것은 현재 지원되지 않습니다. C 표준에 따라 가능합니다. 이는 constexpr 변수가 멤버 함수 본문 내에서 컴파일 타임 상수로 사용 가능해야 하기 때문입니다. 그러나 정적 함수는 클래스가 완료될 때까지 정의되지 않으므로 표현식이 상수 표현식이 될 수 없습니다.
GCC에서 관찰된 문제:
첫 번째 시도 유효해야 하지만 이전 버전의 GCC에서는 버그가 발생했을 수 있습니다. 최신 버전의 GCC에 액세스할 수 있다면 초기 코드를 다시 시도해 볼 가치가 있습니다.
위 내용은 C에서 정적 함수를 사용하여 정적 Constexpr 멤버를 어떻게 초기화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!