C 20의 클래스 템플릿 생성자의 중복 템플릿 매개변수 목록
C에서 클래스 템플릿의 생성자를 선언하는 구문이 변경되었습니다. 이전에는 다음 형식의 코드가 올바른 형식으로 간주되었습니다.
template<typename T> struct S { S<T>(); };
error: expected unqualified-id before ')' token 3 | S<T>(); ^
이 오류는 -std=를 사용하는 GCC10.2 또는 Clang에서는 발생하지 않습니다. c 20, 이는 C 20에 도입된 근본적인 변화에서 비롯되었습니다.
C 20 호환성 섹션에 따르면 생성자 또는 소멸자의 선언자 ID로 simple-template-id를 사용하는 것은 더 이상 허용되지 않습니다. 유효한. 이러한 움직임은 잠재적인 오류 발생 가능성이 있는 중복성을 제거하는 것을 목표로 합니다.
C 20의 [class.ctor] 섹션에 있는 새로운 문구는 클래스 템플릿 내 멤버 선언의 생성자에 대해 주입된 클래스 이름을 대신 사용해야 함을 지정합니다. :
template<typename T> struct S { S(); // Use injected-class-name };
이 예에서 S는 내부 클래스 템플릿에 주입된 클래스 이름을 나타냅니다. 결과적으로, 중복된
위 내용은 C 20 클래스 템플릿 생성자의 중복 템플릿 매개 변수 목록이 이제 오류가 되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!