Здравствуйте, w40, Вы писали:
w40>вот код:
сделал минимальные изменения, которые доводят ваш код до компилябельного состояния:
http://ideone.com/RtxTa
подозреваю, что ваша проблема сосредоточена здесь:
class F{
public:
template<class T>
int func(T::B& a){return 0;}
};
int main()
{
A<C>::B a;
F f;
int rc = f.func(a);
return 0;
}
компилятор не может вывести тип T, когда в функцию func передают переменную типа T::B
такие ограничения на вывод типа при статическом полиморфизме
можно почитать виды полиморфизма здесь:
http://fprog.ru/2010/issue4/roman-dushkin-existentials/
к сожалению, не могу сказать точно, какой вид полиморфизма вы пытаетесь использовать =\
можно спросить в разделе "Функциональное программирование"