DSV>Я считал, что мой пример эквивалентет следующему:
DSV>struct X
DSV>{
DSV> template<typename T, typename TT>
DSV> void RR(T t)
DSV> {
DSV> static_cast<TT*>(this)->R(t);
DSV> }
DSV>};
DSV>struct d : X
DSV>{
DSV> void R(int) {}
DSV> void R(float);
DSV> void foo()
DSV> {
DSV> RR<int,d>(2);
DSV> RR<float,d>(2.0f);
DSV> }
DSV>};
DSV>int main()
DSV>{
DSV> d().foo();
DSV>}
Ты постоянно меняешь условия. R у тебя в одном из классов — typedef'ом был. Но это не важно. То, что ты в вопросе (исправленном)
не эквивалентно тому что написано выше. До сигнатуры тут дело не доходит. Смотри clause 10 стандарта (там, по-моему)