曖昧さ回避に使用されるテンプレートキーワードに関する情報を見つけようとしていますが、それについては何もありません。おそらく私は間違ったキーワードを検索していますが、標準では.templateや->templateのようなものはありません。Googleは、さまざまなフォーラムからのGCCの問題のみを示していますが、それが何に使用されているのかについては実際には説明していません。
そのようなコードは、11行目(GCC上)にtemplateキーワードなしでコンパイルできませんでしたが、これが標準に準拠しているかどうかはよくわかりません。
template<typename B>
struct S1
{
template<typename T> void test() {}
};
template<typename T>
struct S2
{
S2()
{
S1<T>().template test<int>();
}
};
int main()
{
S2<int>();
}
だから私の質問は、なぜここでテンプレートキーワードが使用されるのか、そのキーワードなしでどのような曖昧さが存在するのか、そしてそれについてどこで読むことができるのかということです(標準へのリンクを本当にいただければ幸いです)。
ありがとう。