以下のコードは正常に機能します。
template<typename T> class X {};
class A; // line-1
void foo(); // line-2
int main ()
{
X<A> vA;
}
class A {};
void foo() {}
line-1とline-2を内部に移動させますmain()
。関数は影響を受けませんが、class A
前方宣言は機能せず、コンパイラエラーが発生します:
エラー:
template<class T> class X
ローカルタイプを使用するためのテンプレート引数main()::A