我需要比较两个类型的变量,boost::variant
并且我想比较变量内的值是否相等。
实现这一点的最佳方法是什么?
我的变体如下所示:
typedef boost::variant<int, float, double, long, bool, std::string, boost::posix_time::ptime> variant;
我需要比较两个类型的变量,boost::variant
并且我想比较变量内的值是否相等。
实现这一点的最佳方法是什么?
我的变体如下所示:
typedef boost::variant<int, float, double, long, bool, std::string, boost::posix_time::ptime> variant;
从变体文档:
EqualityComparable:当且仅当它的每个有界类型都满足概念的要求时,variant 本身就是 EqualityComparable。
因此variant
,如果所有类型都具有可比性,则已经实现了相等性。因此,在您的情况下,您应该能够只使用 operator ==
。
通常,您可以通过创建包含对其中一个参数的引用并将访问者应用于第二个参数的一元访问者来实现二进制访问者。