Пожалуйста, пролите свет на этот непонятный кусок спагетти с шаблоном:
template <typename T, typename K> class A {
public:
T t;
K k;
template <int i, int unused = 0> struct AttributeType {
};
template <int i> AttributeType<i> getAttr();
};
template <typename T, typename K> template <int i> A<T, K>::AttributeType<i> A<T, K>::getAttr<i>() {
return t;
}
Я не могу придумать правильный синтаксис для определения реализации A::getAttr()
. Текущий код не компилируется в строке определения getAttr:
error: function template partial specialization ‘getAttr<i>’ is not allowed
Как мне перефразировать определение функции?