微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于不同模板参数的重载运算符

如何解决用于不同模板参数的重载运算符

#include <cstddef>

template <typename T,std::size_t MaxElements>
struct circular_buffer{};

template <typename circular_buffer>
bool operator==(const circular_buffer &a,const circular_buffer &b) {
    return true;
}

int main() {
    circular_buffer<int,2> a;
    circular_buffer<int,3> b;
    a == b;
    return 0;
}

代码仅适用于2 == 3。但是我的2!=我的3.帮助我修理操作员。

解决方法

以下内容可能对您有用:

template <typename T,std::size_t M1,std::size_t M2>
bool operator==(circular_buffer<T,M1> const & a,circular_buffer<T,M2> const & b) {
    // some meaningful logic
    return true;
};

您遇到的问题是ab是不同类型的,即,这两个对象具有不同的MaxElements模板参数。因此,您需要提供操作符==的重载来处理这种情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。