나는 다음과 같은 패턴이 있습니다겹침 C++ 템플릿
template <int a, int b>
class MyClass
{
public:
template <int c>
MyClass<a, c> operator*(MyClass<b, c> const &other) const;
};
// ../..
template <int a, int b> template <int c>
MyClass<a, c> MyClass<a, b>::operator*(MyClass<b, c> const &other) const //< error here
{
MyClass<a, c> result;
// ..do stuff..
return result;
}
그것은 오류 메시지가
오류 C2975 컴파일하지 않습니다. 오류 C2975 : 'DOM'에 대한 잘못된 인수 템플릿은 'MyClass에'
내가 template <int c, int d>
으로 template <int c>
를 교체하고 accordignly를 사용하는 경우, 그것은 잘 작동합니다. 하지만 d
의 값을 b
과 같게하고 싶습니다.
내 질문 :
- 예제가 작동하지 않는 이유는 무엇입니까?
d
을b
과 동일하게 적용하려면 어떻게해야합니까?
감사합니다.
"겹쳐 쌓인"경우 거의 +1입니다. C++ 템플릿에서 일반적으로 사용되는 문구입니까? – Thilo
템플릿을 인스턴스화하는 코드를 보여줄 수 있습니까? 숫자 템플릿 매개 변수가 컴파일시 정수 여야하는 경우 매개 변수 (예 :'int number = stuff(); MyClass <1,number> 건)에 변수를 사용하려고하는 것 같습니다. –
@Thilo : 나는 정말로 모른다, 그것이 틀리다. @ 마이크 : 전적으로 동의하지만, 아직 그것을 instanciate하지 않습니다. – gregseth