« クラステンプレートのテンプレートメンバ関数。 | トップページ | WinSCPでファイルをリネームするときは気をつけよう。 »

2004年2月16日 (月)

自己言及型テンプレート

template< typename T >
class	X{};

class	A :
	public X< A >
{
};
これは合法。


class	B{};

template< typename T >
class	X{};

template< typename U >
class	A :
	public X< A< B > >
{};
これも合法。
でも、Bの代わりにXを指定することは出来ない。当たり前だけど。


template< typename T >
class	X{};

template< typename U >
class	A :
	public X< A< X < ... > > >
{};
こう、順を追って行けばわかりやすいけどいきなり最後のが出てきたりして、AやXのテンプレート引数が4つも5つもあるとそろそろ死ねる。
気づくのにえらい時間がかかった。

|

« クラステンプレートのテンプレートメンバ関数。 | トップページ | WinSCPでファイルをリネームするときは気をつけよう。 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« クラステンプレートのテンプレートメンバ関数。 | トップページ | WinSCPでファイルをリネームするときは気をつけよう。 »