У меня есть следующий шаблон:
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>
на template <int c, int d>
и использую его по назначению, он работает нормально. Но я хочу, чтобы d
было таким же значением, как b
.
Мои вопросы:
- Почему пример не работает?
- Как заставить
d
быть таким же, как b
?
Спасибо.