[以前アップロードしようと思っていて、まだしていなかったエントリです。]
struct X { template <typename T> void func() { } };
というクラスがあった場合に
int main(int argc, char* argv[]) { X x; x.func<int>(); }
というような呼び出し方はできません。こういう場合には、「限定子としてのtemplate」というテクニックを使い
int main(int argc, char* argv[]) { X x; x.template func<int>(); }
としなければならないようです。
ちなみに プログラミング言語C++第3版では付録C.13.6に載っているようです。