出力ストリームをコンストラクタ パラメータの 1 つとして受け入れる LLVM ライブラリを使用して API を設計しています。LLVM コーディング標準では、次のことが規定されています。
raw_ostream を使用する
LLVM には、軽量でシンプルかつ効率的なストリーム実装が llvm/Support/raw_ostream.h に含まれており、std::ostream のすべての共通機能を提供します。新しいコードはすべて、ostream の代わりに raw_ostream を使用する必要があります。
std::ostream とは異なり、raw_ostream はテンプレートではなく、raw_ostream クラスとして前方宣言できます。通常、パブリック ヘッダーには raw_ostream ヘッダーを含めるべきではありませんが、前方宣言と raw_ostream インスタンスへの定数参照を使用します。
LLVM コーディング標準に従う必要があるため、コンストラクターのパラメーターとして raw_ostream を受け入れようとしています。raw_ostream を参照およびポインターで渡そうとしましたが、コンパイル時に次のエラー メッセージが表示されます。
注: 候補コンストラクターは実行できません: 'llvm::raw_ostream &()' から 'llvm::raw_ostream &' への既知の変換はありません...
タイプ 'llvm::raw_ostream &()' のパラメーターを受け入れるには、私のコンストラクターはどのように見えるべきですか? クラス メンバーをこの出力ストリームに初期化したいと思います。
これが私の現在のコードです:
コンストラクタ
MyClass(raw_ostream &OS) : OutputStream(OS) {}
発信者
MyClass x = new MyClass(&outs);
outs
このリンクの665行目から文書化されています