>853
ちょっと違う。
template 中の名前解決は 2 回に分けて行われる(これは two phase lookup と言われている)。
具体的には宣言された時と、インスタンス化された時の 2 回。
テンプレート型パラメータに依存している名前はインスタンス化された時に、それ以外は宣言時に解決される。
f() はテンプレート型パラメータに依存していないため宣言時に名前が解決され、結果として、テンプレート型パラメータ依存の
基本クラス B<T> まで見に行かない(見に行くのはインスタンス化された時だから)。
this->f() にすると、this がテンプレート型パラメータ依存であるため、this->f() もテンプレート型パラメータ依存となる。
結果、f の名前解決がインスタンス化時点となり、テンプレート型パラメータ依存の B<T> の中まで探しに行くことになる。