次のバリアントがあります。
typedef boost::variant<int, float, bool> TypeVariant;
int
そして、 orfloat
型を型に変換するビジターを作成したいと考えていますbool
。
struct ConvertToBool : public boost::static_visitor<TypeVariant> {
TypeVariant operator()(int a) const {
return (bool)a;
}
TypeVariant operator()(float a) const {
return (bool)a;
}
};
ただし、これによりエラーメッセージが表示されます:
'TypeVariant ConvertToBool::operator ()(float) const': 引数 1 を 'T' から 'float' に変換できません
訪問者が特定のタイプにのみ適用できるようにする正しい方法は何ですか?