私が持っているとします:
class TypeA { };
class TypeB { };
typedef boost::variant<TypeA, TypeB> Type;
これで結構です:
void foo(Type t) { }; int main(){ TypeA a; foo(a); }
これはコンパイルされません:
void foo(Type &t) { }; int main(){ TypeA a; foo(a); }
エラーで:
タイプ「TypeA」の式からのタイプ「Type&」の参照の無効な初期化</p>
また、これはコンパイルされません:
void foo(Type *t) { }; int main(){ TypeA a; foo(&a); }
エラーで:
引数 '1' を 'void foo(Type*)' にするために 'TypeA*' を 'Type*' に変換できません</p>
boost::variant を受け入れる関数に、参照 (ケース 2 のように) またはポインタ (ケース 3 のように) のいずれかを介して、その boost::variant によって集約された型の 1 つのインスタンスを渡す方法はありますか? ?
どうもありがとうございました!