Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1c85cbeb authored by Yi Kong's avatar Yi Kong
Browse files

Reexport operator!= overloads in the derived type to avoid ambiguous base class lookups

clang-r510928 is becoming stricter on ambiguous lookups, and produces the following error:

frameworks/av/media/codec2/vndk/include/util/C2InterfaceHelper.h:606:34: error: member 'operator!=' found in multiple base classes of different types
  606 |                 if (helper.get() != *typedParam->get()) {
      |                                  ^
frameworks/av/media/codec2/vndk/include/util/C2InterfaceHelper.h:587:23: note: while substituting into a lambda expression here
  587 |             setSetter([typedParam, fn, &deps...](
      |                       ^
...
frameworks/av/media/codec2/core/include/C2Param.h:430:17: note: member found by ambiguous name lookup
  430 |     inline bool operator!=(const C2Param &o) const { return !operator==(o); }
      |                 ^
frameworks/av/media/codec2/core/include/C2Config.h:1320:10: note: member found by ambiguous name lookup
 1320 |     bool operator!=(const C2RectStruct &) = delete;
      |          ^

Test: presubmit
Bug: 316272684
Change-Id: If199a6df9a426e24a1f02ee99d5a1d8d454ed769
parent e4eb1cb4
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -404,6 +404,7 @@ public:
    /// Specialization for an input port parameter.
    struct input : public T, public S,
            public _C2StructCheck<S, ParamIndex, T::PARAM_KIND | T::Index::DIR_INPUT> {
        using T::operator!=;
        _C2_CORE_INDEX_OVERRIDE(ParamIndex)
        /// Wrapper around base structure's constructor.
        template<typename ...Args>
@@ -416,6 +417,7 @@ public:
    /// Specialization for an output port parameter.
    struct output : public T, public S,
            public _C2StructCheck<S, ParamIndex, T::PARAM_KIND | T::Index::DIR_OUTPUT> {
        using T::operator!=;
        _C2_CORE_INDEX_OVERRIDE(ParamIndex)
        /// Wrapper around base structure's constructor.
        template<typename ...Args>
@@ -470,6 +472,7 @@ public:
    /// Specialization for an input port parameter.
    struct input : public T,
            public _C2FlexStructCheck<S, ParamIndex, T::PARAM_KIND | T::Index::DIR_INPUT> {
        using T::operator!=;
    private:
        /// Wrapper around base structure's constructor while also specifying port/direction.
        template<typename ...Args>
@@ -486,6 +489,7 @@ public:
    /// Specialization for an output port parameter.
    struct output : public T,
            public _C2FlexStructCheck<S, ParamIndex, T::PARAM_KIND | T::Index::DIR_OUTPUT> {
        using T::operator!=;
    private:
        /// Wrapper around base structure's constructor while also specifying port/direction.
        template<typename ...Args>
@@ -549,6 +553,7 @@ public:
    struct input : public T, public S,
            public _C2StructCheck<S, ParamIndex,
                    T::PARAM_KIND | T::Index::IS_STREAM_FLAG | T::Type::DIR_INPUT> {
        using T::operator!=;
        _C2_CORE_INDEX_OVERRIDE(ParamIndex)

        /// Default constructor. Stream-ID is undefined.
@@ -567,6 +572,7 @@ public:
    struct output : public T, public S,
            public _C2StructCheck<S, ParamIndex,
                    T::PARAM_KIND | T::Index::IS_STREAM_FLAG | T::Type::DIR_OUTPUT> {
        using T::operator!=;
        _C2_CORE_INDEX_OVERRIDE(ParamIndex)

        /// Default constructor. Stream-ID is undefined.
@@ -634,6 +640,7 @@ public:
    struct input : public T,
            public _C2FlexStructCheck<S, ParamIndex,
                    T::PARAM_KIND | T::Index::IS_STREAM_FLAG | T::Type::DIR_INPUT> {
        using T::operator!=;
    private:
        /// Default constructor. Stream-ID is undefined.
        inline input(size_t flexCount) : T(_Type::CalcSize(flexCount), input::PARAM_TYPE) { }
@@ -656,6 +663,7 @@ public:
    struct output : public T,
            public _C2FlexStructCheck<S, ParamIndex,
                    T::PARAM_KIND | T::Index::IS_STREAM_FLAG | T::Type::DIR_OUTPUT> {
        using T::operator!=;
    private:
        /// Default constructor. Stream-ID is undefined.
        inline output(size_t flexCount) : T(_Type::CalcSize(flexCount), output::PARAM_TYPE) { }