タイプの2つの変数を比較する必要がありboost::variant
、バリアント内の値が等しいかどうかを比較したいと思います。
これを実装するための最良の方法は何でしょうか?
私の変種は次のようになります:
typedef boost::variant<int, float, double, long, bool, std::string, boost::posix_time::ptime> variant;
タイプの2つの変数を比較する必要がありboost::variant
、バリアント内の値が等しいかどうかを比較したいと思います。
これを実装するための最良の方法は何でしょうか?
私の変種は次のようになります:
typedef boost::variant<int, float, double, long, bool, std::string, boost::posix_time::ptime> variant;
バリアントドキュメントから:
EqualityComparable:バリアントは、その有界型のすべてが概念の要件を満たしている場合にのみ、それ自体がEqualityComparableです。
したがってvariant
、すべてのタイプが比較可能である場合、すでに等式を実装しています。したがって、あなたの場合は、演算子を使用できるはずです==
。
一般に、引数の1つへの参照を囲む単項ビジターを作成し、ビジターを2番目の引数に適用することにより、バイナリビジターを実装できます。