From e58ce1fd9fb41e41d8539a3d8d118c7da034d6b9 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Mon, 11 Apr 2022 20:49:43 +0200 Subject: Change search::multivalue::Value from class to using statement. --- .../searchcommon/attribute/multi_value_traits.h | 11 ++------ .../src/vespa/searchcommon/attribute/multivalue.h | 31 +++++----------------- .../vespa/searchlib/features/dotproductfeature.cpp | 4 +-- 3 files changed, 11 insertions(+), 35 deletions(-) diff --git a/searchcommon/src/vespa/searchcommon/attribute/multi_value_traits.h b/searchcommon/src/vespa/searchcommon/attribute/multi_value_traits.h index fcb3f1bd33a..f03b031f991 100644 --- a/searchcommon/src/vespa/searchcommon/attribute/multi_value_traits.h +++ b/searchcommon/src/vespa/searchcommon/attribute/multi_value_traits.h @@ -6,17 +6,13 @@ namespace search::multivalue { -template class Value; template class WeightedValue; /* * Check for the presence of a weight. */ template -struct is_WeightedValue; - -template -struct is_WeightedValue> : std::false_type {}; +struct is_WeightedValue : std::false_type {}; template struct is_WeightedValue> : std::true_type {}; @@ -28,10 +24,7 @@ inline constexpr bool is_WeightedValue_v = is_WeightedValue::value; * Extract inner type. */ template -struct ValueType; - -template -struct ValueType> { using type = T; }; +struct ValueType { using type = T; }; template struct ValueType> { using type = T; }; diff --git a/searchcommon/src/vespa/searchcommon/attribute/multivalue.h b/searchcommon/src/vespa/searchcommon/attribute/multivalue.h index 091bf78a4dd..7cb411fd840 100644 --- a/searchcommon/src/vespa/searchcommon/attribute/multivalue.h +++ b/searchcommon/src/vespa/searchcommon/attribute/multivalue.h @@ -7,21 +7,7 @@ namespace search::multivalue { template -class Value { -public: - Value() noexcept : _v() {} - Value(T v) noexcept : _v(v) { } - T value() const noexcept { return _v; } - const T& value_ref() const noexcept { return _v; } - T& value_ref() noexcept { return _v; } - operator T () const noexcept { return _v; } - operator T & () noexcept { return _v; } - bool operator ==(const Value & rhs) const { return _v == rhs._v; } - bool operator <(const Value & rhs) const { return _v < rhs._v; } - bool operator >(const Value & rhs) const { return _v > rhs._v; } -private: - T _v; -}; +using Value = T; template class WeightedValue { @@ -44,36 +30,33 @@ private: }; template -inline int32_t get_weight(const Value&) noexcept { return 1; } +inline int32_t get_weight(const T&) noexcept { return 1; } template inline int32_t get_weight(const WeightedValue& value) noexcept { return value.weight(); } template -inline T get_value(const Value &value) noexcept { return value.value(); } +inline T get_value(const T& value) noexcept { return value; } template inline T get_value(const WeightedValue& value) noexcept { return value.value(); } template -inline const T& get_value_ref(const Value &value) noexcept { return value.value_ref(); } +inline const T& get_value_ref(const T& value) noexcept { return value; } template inline const T& get_value_ref(const WeightedValue& value) noexcept { return value.value_ref(); } template -inline T& get_value_ref(Value &value) noexcept { return value.value_ref(); } +inline T& get_value_ref(T& value) noexcept { return value; } template inline T& get_value_ref(WeightedValue& value) noexcept { return value.value_ref(); } template -struct ValueBuilder; - -template -struct ValueBuilder> +struct ValueBuilder { - static Value build(T value, int32_t) noexcept { return Value(value); } + static M build(M value, int32_t) noexcept { return value; } }; template diff --git a/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp b/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp index 008c9e8b54b..3cef5d06043 100644 --- a/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp +++ b/searchlib/src/vespa/searchlib/features/dotproductfeature.cpp @@ -402,8 +402,8 @@ DotProductByContentFillExecutor::~DotProductByContentFillExecutor() = namespace { -template struct IsNonWeightedType : std::false_type {}; -template struct IsNonWeightedType> : std::true_type {}; +template struct IsNonWeightedType : std::true_type {}; +template struct IsNonWeightedType> : std::false_type {}; // Compile-time sanity check for type compatibility of gnarly BaseType <-> multivalue::Value // reinterpret_cast used by some getAttributeValues calls. -- cgit v1.2.3