다음 코드 조각의 i와 같이 상수가 아닌 변수를 템플릿 인수로 전달하려고 하면 컴파일러에서 문제가 발생합니다. 오류:
1 2 3 4 5 6 |
|
오류 이유:
템플릿은 컴파일 중에 확장되므로 컴파일 시 인수를 평가해야 합니다. i가 루프 내에서 수정되므로 컴파일러는 컴파일 타임에 해당 값을 확인할 수 없으며 이로 인해 오류가 발생합니다.
대체 구현:
API 인터페이스를 변경하려면 다음 구현을 고려하세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
이 버전은 반복을 에뮬레이션하기 위해 재귀를 활용합니다. 각 값(예: 수정<0>, 수정<1> 등)에 대한 특수 템플릿 함수를 인스턴스화하여 코드는 i=0에서 i=9까지 루프 동작을 시뮬레이션합니다.
Non -상수 템플릿 인수 해결:
가변 인수 VAR(함수 계산에 의해 결정됨)을 사용하여 수정을 호출하려면 다음과 같이 가변 매개변수가 있는 템플릿 함수를 사용하는 것이 좋습니다.
1 2 3 4 5 6 7 8 9 |
|
위 내용은 C에서 상수가 아닌 변수를 템플릿 인수로 사용할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!