템플릿 메서드로 일반 클래스를 만들었으며 모든 메서드 인스턴스가 명시 적이며 인라인되었습니다.명시 적 클래스 멤버 인스턴스화
class MyClass
{
template<int N> inline void MyMethod();
template<> inline void MyMethod<1>() { cout << 1; }
template<> inline void MyMethod<2>() { cout << 2; }
};
처럼 나는 컴파일해야하는
template<>
구문을 사용하는 데 필요한. 클래스 선언 외부의 메서드를 명시 적으로 정의하고 구문 변형을 사용하는 등의 다른 솔루션을 사용해 보았습니다. (이 이후 버전에 시도하지, VS2008에서 만들어졌다.) 나는 두 가지 질문이
:
- 이 이식을?
- 의미가 있습니까?
이러한 템플릿 메서드의 전문화 (헤더에 이러한 전문 분야의 적절한 선언이 포함되어있는 경우)를 소스 파일로 옮길 수 있다는 점은 주목할 가치가 있습니다. 그것이 특수화되지 않은 메소드 템플리트로 수행 될 수는 없지만 ... –
왜 작동합니까? –
@YvesDaoust 사실 (https://godbolt.org/g/yEBYVo) [작품] (https://godbolt.org/g/GzWrlo). 어쩌면 컴파일러의 확장일까요? – skypjack