私はテンプレート(ヘルパー)クラスを持っていて、テンプレートのすべてのインスタンス化されたクラスをフレンドにしたいと考えています(テンプレート引数を時々内部に入れても、このようテンプレートのすべてのインスタンス化されたクラスを相互に友人として宣言することは可能ですか?
:gccが、私は(名前空間スコープで現れなければならない)許可されていないいくつかのテンプレートを特化してることを私に警告しているので、
template </* some types */>
class Foo {
template </* same as above types */>
friend class Foo</* template arguments */>;
// ...
};
はしかし、これはコンパイルされません。私は何かを専門にしようとしていません...
それを行う方法はありますか?もともと
、多くの多くの議論があるので、私はいくつかのタイピングを節約するために可変長引数テンプレートを使用しようとしていたが、それはコンパイラによって分業と考えられています。後ですべての引数を入力するように戻しましたが、明示的な特殊化が呼び出されます(<>
が保持されます)。
非常に元のコード:
template <class... Ts>
friend class Foo<Ts...>;
@RyanHaining、まったく同じように、ありがとう – YiFei