diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-04-11 20:49:43 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-04-11 20:49:43 +0200 |
commit | e58ce1fd9fb41e41d8539a3d8d118c7da034d6b9 (patch) | |
tree | ed88383d9a9b8197a458a877b385499b5a79b8a9 | |
parent | efb1d9c7cee11fa19b088eb8db185016dee471db (diff) |
Change search::multivalue::Value from class to using statement.
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 <typename T> class Value; template <typename T> class WeightedValue; /* * Check for the presence of a weight. */ template <typename T> -struct is_WeightedValue; - -template <typename T> -struct is_WeightedValue<Value<T>> : std::false_type {}; +struct is_WeightedValue : std::false_type {}; template <typename T> struct is_WeightedValue<WeightedValue<T>> : std::true_type {}; @@ -28,10 +24,7 @@ inline constexpr bool is_WeightedValue_v = is_WeightedValue<T>::value; * Extract inner type. */ template <typename T> -struct ValueType; - -template <typename T> -struct ValueType<Value<T>> { using type = T; }; +struct ValueType { using type = T; }; template <typename T> struct ValueType<WeightedValue<T>> { 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 <typename T> -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<T> & rhs) const { return _v == rhs._v; } - bool operator <(const Value<T> & rhs) const { return _v < rhs._v; } - bool operator >(const Value<T> & rhs) const { return _v > rhs._v; } -private: - T _v; -}; +using Value = T; template <typename T> class WeightedValue { @@ -44,36 +30,33 @@ private: }; template <typename T> -inline int32_t get_weight(const Value<T>&) noexcept { return 1; } +inline int32_t get_weight(const T&) noexcept { return 1; } template <typename T> inline int32_t get_weight(const WeightedValue<T>& value) noexcept { return value.weight(); } template <typename T> -inline T get_value(const Value<T> &value) noexcept { return value.value(); } +inline T get_value(const T& value) noexcept { return value; } template <typename T> inline T get_value(const WeightedValue<T>& value) noexcept { return value.value(); } template <typename T> -inline const T& get_value_ref(const Value<T> &value) noexcept { return value.value_ref(); } +inline const T& get_value_ref(const T& value) noexcept { return value; } template <typename T> inline const T& get_value_ref(const WeightedValue<T>& value) noexcept { return value.value_ref(); } template <typename T> -inline T& get_value_ref(Value<T> &value) noexcept { return value.value_ref(); } +inline T& get_value_ref(T& value) noexcept { return value; } template <typename T> inline T& get_value_ref(WeightedValue<T>& value) noexcept { return value.value_ref(); } template <typename M> -struct ValueBuilder; - -template <typename T> -struct ValueBuilder<Value<T>> +struct ValueBuilder { - static Value<T> build(T value, int32_t) noexcept { return Value<T>(value); } + static M build(M value, int32_t) noexcept { return value; } }; template <typename T> 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<BaseType>::~DotProductByContentFillExecutor() = namespace { -template<typename T> struct IsNonWeightedType : std::false_type {}; -template<typename BaseType> struct IsNonWeightedType<multivalue::Value<BaseType>> : std::true_type {}; +template<typename T> struct IsNonWeightedType : std::true_type {}; +template<typename BaseType> struct IsNonWeightedType<multivalue::WeightedValue<BaseType>> : std::false_type {}; // Compile-time sanity check for type compatibility of gnarly BaseType <-> multivalue::Value // reinterpret_cast used by some getAttributeValues calls. |