本気で「ドッ!」って感じです。ここで一瞬…
私は現在実装しようとしています:
std::ostream& operator<<(std::ostream &out, const MyType &type)
MyType は、int、char、および bool の boost::variant を保持します。IE: バリアントをストリーミング可能にします。
私はこれをやってみました:
out << boost::apply_visitor(MyTypePrintVisitor(), type);
return out;
MyTypePrintVisitor には、boost::lexical_cast を使用して int、char、または bool を文字列に変換するテンプレート化された関数があります。
ただし、これはコンパイルされず、apply_visitor は MyType の関数ではないというエラーが表示されます。
次に、これを行いました:
if(type.variant.type() == int)
out << boost::get<int> (type.variant);
// So on for char and bool
...
私が見逃しているよりエレガントなソリューションはありますか? ありがとう。
編集:問題は解決しました。最初の解決策とそれに対する私のコメントを参照してください。