Шаблон спагетти

Пожалуйста, пролейте свет на этот непонятный кусок спагетти с шаблонами:

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:

ошибка: частичная специализация шаблона функции 'getAttr ' не разрешена

Как мне перефразировать определение функции?

5
задан ognian 3 June 2011 в 20:06
поделиться