Я хотел бы определить некоторые методы члена шаблона внутри шаблон класса как так:ошибка «слишком много шаблонов параметров-списки», когда, специализирующаяся функция члена
template <typename T>
class CallSometing {
public:
void call (T tObj); // 1st
template <typename A>
void call (T tObj, A aObj); // 2nd
template <typename A>
template <typename B>
void call (T tObj, A aObj, B bObj); // 3rd
};
template <typename T> void
CallSometing<T>::call (T tObj) {
std::cout << tObj << ", " << std::endl;
}
template <typename T>
template <typename A> void
CallSometing<T>::call (T tObj, A aObj) {
std::cout << tObj << ", " << aObj << std::endl;
}
template <typename T>
template <typename A>
template <typename B> void
CallSometing<T>::call (T tObj, A aObj, B bObj) {
std::cout << tObj << ", " << aObj << ", " << bObj << ", " << std::endl;
}
Но когда instantializing класса шаблона, есть ошибка в отношении определения трех аргументов menthod:
CallSometing<int> caller;
caller.call(12); // OK
caller.call(12, 13.0); // OK
caller.call (12, 13.0, std::string("lalala!")); // NOK - complains "error: too many template-parameter-lists"
Не могли бы вы указать, что я делаю неправильно? Почему метод (2-й) в порядке, но (3-й) вызывает ошибку времени компиляции?
Aghhhhh, +1 за 4 секунды быстрее. :-D –
@ Джеймс: Он не был через четыре секунды, он был на три секунды раньше. ':)' – sbi