6

タイプの2つの変数を比較する必要がありboost::variant、バリアント内の値が等しいかどうかを比較したいと思います。

これを実装するための最良の方法は何でしょうか?

私の変種は次のようになります:

typedef boost::variant<int, float, double, long, bool, std::string, boost::posix_time::ptime> variant;
4

1 に答える 1

10

バリアントドキュメントから:

EqualityComparable:バリアントは、その有界型のすべてが概念の要件を満たしている場合にのみ、それ自体がEqualityComparableです。

したがってvariant、すべてのタイプが比較可能である場合、すでに等式を実装しています。したがって、あなたの場合は、演算子を使用できるはずです==

一般に、引数の1つへの参照を囲む単項ビジターを作成し、ビジターを2番目の引数に適用することにより、バイナリビジターを実装できます。

于 2011-01-03T14:19:05.963 に答える