「限定子としてのtemplate」にはまる

[以前アップロードしようと思っていて、まだしていなかったエントリです。]

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に載っているようです。

プログラミング言語C++
著者: Bjarne Stroustrup
ページ数: 1031ページ
出版社: アスキー
発売日: 1998年12月