オブジェクトの束の有効期間を管理するテンプレート化されたプール クラスがあります。通常、必要に応じて new と delete を呼び出しますが、create 関数と destroy 関数を渡すこともできます。
さて、このクラスの一部のユーザーには、プライベート コンストラクターが必要であり、create / destroy 関数の受け渡しのみを許可したいと考えています。これにより、コンパイル エラーが発生します。これは、"new T" 行が使用されていないにもかかわらず、まだプール クラスにあるためです。これまでのところ、プールを問題のクラスのフレンドにすることでこれを解決しました。これはまだ誤用の可能性を残しています (たとえば、特定のオブジェクトのプールを手動で作成し、作成/破棄関数を渡さないなど)。そのため、プール クラスを特殊化して真のプライベートを持つことができるようにする最善の方法は何か疑問に思っています。フレンドを使用せずにテンプレート引数のコンストラクター。