G로 컴파일 할 때이 코드는 오류가 발생합니다. 위의 예에서, CCOSTRAINT는 네임 스페이스 내부에 선언되지 않으므로
VC 컴파일러는이 경우 네임 스페이스 범위 외부의 명시 적 전문화를 허용합니다. 이 동작은 비표준이며 의존해서는 안됩니다.
template솔루션 :class CConstraint { // ... template void Verify(int position, int constraints[]) { } template void Verify (int, int[]) { } };
templateclass CConstraint { // ... template void Verify(int position, int constraints[]) { } template void Verify (int, int[]) { } };
templateclass CConstraint { // ... template void Verify(int position, int constraints[]) { } template void Verify (int, int[]) { } };
는 특수화 된 템플릿과 동일한 네임 스페이스 내에서 명시 적 전문화가 선언되어야합니다. 다음은 코드의 수정 된 버전입니다 :
templatenamespace mynamespace { 템플릿class CConstraint { // ... template void Verify(int position, int constraints[]) { } template void Verify (int, int[]) { } };
네임 스페이스 세부 사항 {
템플릿
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3