함수 템플릿을 고려하세요.
template<typename T> void printme(T&& t) { for (auto i : t) std::cout << i; }
이 함수에는 시작이 있는 유형의 매개변수 하나가 필요합니다. () 및 끝() function.
질문:
다음 호출은 왜 불법인가요?
printme({'a', 'b', 'c'});
답변:
printme({'a', 'b', 'c'}) 호출은 불법입니다. 템플릿 인수 T를 추론할 수 없습니다. 템플릿 인수를 명시적으로 지정하지 않으면 컴파일러는 매개 변수의 유형을 결정할 수 없습니다. 왜냐하면 매개 변수는 start() 및 end() 함수가 있는 모든 유형일 수 있기 때문입니다. 다음과 같은 경우에는 이 문제가 발생하지 않습니다.
이에 대한 예외는 auto를 std::initializer_list
위 내용은 C 템플릿 유형 추론에서 `printme({\'a\', \'b\', \'c\'});`가 불법인 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!