Re: illegal use of explicit template arguments
От: guyos Россия  
Дата: 15.12.09 15:34
Оценка: 8 (1)
Здравствуйте, Caracrist, Вы писали:


/*
template<typename T, int b>
void ffff();

template<typename T>
void ffff<T,1>(){}
*/


Запись типа:
template<typename T>
void ffff<T,1>(){}

не корректна, так как не существует частичной специализации для функций, не зависимо от того являются ли они членами класса или нет.
Лучше написать перегруженную версию с одним маленьким приемом от Андрея Александреску:

template<int v>
struct Int2Type /*Alexandresku*/
{
enum { value = v};
};

И использовать так:

template<typename T>
void ffff(Int2Type<1>){}

template<typename T>
void ffff(Int2Type<2>){}

template<typename T, int b>
void ffff()
{
ffff<T>(Int2Type<b>());
}
с/с++
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.