Template specialization
От: PavelCH  
Дата: 16.05.18 07:42
Оценка:
Добрый день!
Есть код:
#include <iostream>

template<typename T, unsigned N> struct a {
    T data[N];
};

template<typename T> int get() { return 0; }
template<> int get<int>() { return 1; }
template<> int get<char>() { return 2; }
template<class T, unsigned N> int get<a<T,N>>() { return 3; }

int main()
{
    a<char, 10> a1;
    std::cout << get<int>() << "\n";
    std::cout << get<char>() << "\n";
    std::cout << get<decltype(a1)>() << "\n";
}


Ругается "function template partial specialization 'get<a<T, N> >' is not allowed" на строке
template<class T, unsigned N> int get<a<T,N>>() { return 3; }

И я понимаю, потому что частичная специализация шаблоном запрещена.
А если очень надо? Как лучше тогда реализовать идею чтобы функция возвращала разные значения, в зависимости от типа специализации?
Нехай щастить
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.