ОК, у меня есть:
template<typename T>
class Reader
{
class Input
{
template<typename C>
void operator()(C& val) const
{
/* Do Some Work */
}
};
};
К сожалению, универсальная версия "Do Some Work" не работает для меня. Также его нелегко изменить, потому что он находится в середине какого-то тяжелого шаблона мета-программирования.
Так что, хотя я мог бы специализировать метод для своего типа. Поэтому я первым делом попытался вытащить общий метод из класса.
template<typename T>
class Reader
{
class Input
{
template<typename C>
void operator()(C& val) const;
};
};
template<typename T>
template<typename C>
void typename Reader<T>::Input template operator()<C>(C& val) const // LINE 13
{
/* Do Some Work */
}
К сожалению, я получаю ошибку:
s.h: 13: ошибка: ошибка: ожидается ‘)’ перед символом ‘&’