Don't call operator VariantConstRef in VariantComparer

This commit is contained in:
Benoit Blanchon
2022-08-30 10:14:48 +02:00
parent ffa7f8d22d
commit 2b6bb78a09
3 changed files with 16 additions and 7 deletions

View File

@@ -128,9 +128,9 @@ struct RawComparer : ComparerBase {
};
struct VariantComparer : ComparerBase {
VariantConstRef rhs;
const VariantData* rhs;
explicit VariantComparer(VariantConstRef value) : rhs(value) {}
explicit VariantComparer(const VariantData* value) : rhs(value) {}
CompareResult visitArray(const CollectionData& lhs) {
ArrayComparer comparer(lhs);
@@ -180,8 +180,7 @@ struct VariantComparer : ComparerBase {
private:
template <typename TComparer>
CompareResult accept(TComparer& comparer) {
CompareResult reversedResult =
variantAccept(VariantAttorney::getData(rhs), comparer);
CompareResult reversedResult = variantAccept(rhs, comparer);
switch (reversedResult) {
case COMPARE_RESULT_GREATER:
return COMPARE_RESULT_LESS;
@@ -198,7 +197,7 @@ struct Comparer<
T, typename enable_if<is_convertible<T, VariantConstRef>::value>::type>
: VariantComparer {
explicit Comparer(const T& value)
: VariantComparer(value.operator VariantConstRef()) {}
: VariantComparer(VariantAttorney::getData(value)) {}
};
template <typename T>