有没有更好的方法让“std::tuple::operator==”从另一个命名空间利用“operator==”?

2023-12-31

我用的是Cstruct(我无法控制)并写了一个独立的operator==在命名空间中实现它。我还有另一个班级有 Cstruct作为会员,并且还拥有operator==执行。本来我有:

#include <tuple>

struct Foo
{
    int x;
};

struct Bar
{
    Foo foo;
    int y;
};

namespace foo_ops
{
    bool operator==(const Foo& f1, const Foo& f2)
    {
        return f1.x == f2.x;
    }
}

bool operator==(const Bar& b1, const Bar& b2)
{
    using namespace foo_ops;
    return b1.foo == b2.foo && b1.y == b2.y;
}

这有效。我想改变operator==(const Bar&, const Bar&) to use std::tuple反而:

bool operator==(const Bar& b1, const Bar& b2)
{
    using namespace foo_ops;
 
    auto asTuple = [](const Bar& b)
    {
        return std::tie(b.foo, b.y);
    };

    return asTuple(b1) == asTuple(b2);
}

但这无法解决,因为编译器不会选择foo_ops::operator==当比较时Foo成员。依赖于参数的查找在这里没有帮助,因为Foo struct在与相应的名称空间不同的名称空间中声明operator==.

如果我添加一个,它显然会起作用using foo_ops::operator==;全局范围内的声明。如果在函数的作用域中使用该声明,则没有帮助。一个全球范围的using namespace foo_ops;指令也没有帮助。

我的问题:

  • 有什么办法可以得到std::tuple::operator==选择foo_ops::operator==没有全球范围的using宣言? (或者也许我应该放弃operator==(const Foo&, const Foo&)住在一个单独的命名空间中并将其移至全局命名空间?)我怀疑答案是否定的,并且using foo_ops::operator==;还不错,但也许我错过了一些替代方案。

  • 并不是说我真的想使用全球范围的using namespace foo_ops;指令,但为什么会失败using foo_ops::operator==;成功了吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有更好的方法让“std::tuple::operator==”从另一个命名空间利用“operator==”? 的相关文章

  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • 结构体如何存储在内存中?

    我有一个struct iof header在我的代码中 我确定它的宽度是 24 字节 我执行 sizeof iof header 它返回 32 字节宽 问题1为什么是 32 字节宽而不是 24 字节宽 问题2包括其成员在内 结构体如何存储在
  • 是否有可能劫持标准输出

    我正在尝试使用 C 重定向 Windows XP 上已运行进程的标准输出 我知道如果我自己生成进程 我可以做到这一点 但对于这个应用程序 我更喜欢一个 监听器 我可以附加到另一个进程 这在纯 Net 中可能吗 如果不可能 在 Win32 中
  • .crt 部分?这个警告是什么意思?

    我最近收到此警告 VC 2010 warning LNK4210 CRT section exists there may be unhandled static initializers or terminators 我假设这是关键部分
  • STL之类的容器typedef快捷方式?

    STL 容器的常见模式是这样的 map
  • 深拷贝和动态转换 unique_ptr

    假设我有一个如下所示的类 class A virtual A class B public A class C public A 我还有一个 unique ptr 向量 它是这样声明的 std vector
  • NDK 应用 onDestroy 清理 - 如何 DetachCurrentThread

    因此 如果我们连接 我们必须在完成后分离线程 对吗 JNIEnv get jni env JNIEnv res JAVA VM gt GetEnv void res JNI VERSION 1 6 Using cached JavaVM J
  • 最新 .Net MongoDb.Driver 的连接问题

    我创建了一个 MongoLab 沙箱数据库 我与 MongoChef 连接 效果很好 我通过 Nuget 安装了 MongoDB Driver 2 2 2 我编写了一些简单的 C 演示代码 但就是无法使其工作 连接字符串是直接从 Mongo
  • 在没有 epsilon 的情况下可以将浮点数与 0.0 进行比较吗?

    我知道 要比较两个浮点值 需要使用一些 epsilon 精度 因为它们并不精确 但是 我想知道是否存在边缘情况 我不需要那个 epsilon 特别是 我想知道这样做是否总是安全的 double foo double x if x lt 0
  • 组合框下拉位置

    我有一个最大化的表单 其中包含 500px 的组合框控件 停靠在右上角 Width 尝试打开组合框后 列表的一半超出了屏幕 如何强制列表显示在表单中 棘手的问题 我找不到解决这个问题的好办法 只是一个解决方法 添加一个新类并粘贴如下所示的代
  • Visual Studio 中列表框的上移、下移按钮[重复]

    这个问题在这里已经有答案了 我正在尝试制作一个上移按钮和一个下移按钮 以移动 Microsoft Visual Studio 2012 中列表框中的选定项目 我已经在 WDF jquery winforms 和其他一些表单中看到了其他示例
  • 如何减少 MinGW g++ 编译器生成的可执行文件的大小?

    我有一个简单的 Hello world C 程序 在 Win XP 下由 MinGW g 编译器编译为 500kB 可执行文件 有人说这是由于iostream的库和静态链接libstdc dll Using s链接器选项有点帮助 减少了 5
  • 控制台应用程序中使用 Unicode 字符的 _tprintf

    我正在从 Unicode 构建的控制台应用程序 使用 C 和 Visual Studio 2008 执行这个简单的输出 此代码旨在在 Windows 上运行 tprintf L Some sample string n 一切正常 但是如果我
  • C# 枚举到字符串自动转换?

    是否可以让编译器自动将我的 Enum 值转换为字符串 这样我就可以避免每次都显式调用 ToString 方法 这是我想做的一个例子 enum Rank A B C Rank myRank Rank A string myString Ran
  • 调用异步方法在视图模型的构造函数中加载数据有警告

    我的视图包含一个 ListView 它显示来自互联网的一些数据 我创建一个异步方法来加载数据并在我的视图模型的构造函数中调用该方法 它有一个警告提示我现在使用await关键字 还有其他解决方案可以在构造函数中异步加载数据吗 有几种可以应用的
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • 更改 Xamarin.Forms 应用中顶部栏和底部栏(ControlsBar、StatusBar)的颜色

    无论如何 即使后面需要特定于平台的代码 也可以更改顶部栏 蓝色的 和底部栏 黑色的 的颜色吗 我希望添加对浅色和深色模式的支持 因此我希望能够在运行时更改它 有可能的 Android Using Window SetStatusBarCol
  • C#:自定义转换为值类型

    是否可以将自定义类转换为值类型 这是一个例子 var x new Foo var y int x Does not compile 是否有可能实现上述情况 我需要超载一些东西吗Foo 您将必须重载强制转换运算符 public class F
  • 卸载程序

    我正在尝试使用此代码卸载程序 但它似乎不起作用 我尝试过其他答案 但似乎也不起作用 有人可以帮助我吗 我正在尝试按给定名称 displayName 卸载该程序 例如 我给出 displayName Appname 那么此代码应该从我的计算机
  • 从对列表创建邻接列表类型结构

    在 C 中 我有 class Pair int val1 int val2 我有一个来自以下来源的配对列表 List

随机推荐

  • JavaScript 中去除字符串中的所有非数字字符

    考虑一个非 DOM 场景 您希望使用 JavaScript ECMAScript 从字符串中删除所有非数字字符 范围内的任何字符0 9应该保留 var myString abc123 8
  • 如何高效解析固定宽度文件?

    我正在尝试找到一种有效的方法来解析包含固定宽度行的文件 例如 前 20 个字符代表一列 从 21 30 开始代表另一列 依此类推 假设该行包含 100 个字符 将一行解析为多个组成部分的有效方法是什么 我可以对每行使用字符串切片 但如果行很
  • 具有多个条件的布尔索引[重复]

    这个问题在这里已经有答案了 我有一个熊猫DF我需要去哪里filter输出一些包含特征 a 和特征 b 的值 0 的行 为了检查这些值 我运行以下命令 DF1 DF DF a 0 它返回正确的值 同样 通过这样做 DF2 DF DF b 0
  • 来自 Pyspark ArrayType 列的随机样本

    我在 Pyspark 数据框中有一列 其结构如下 Column1 a b c d e c b d f g h i p l m 我想返回另一列 其中随机选择每行中的每个数组 以及函数中指定的数量 所以像data withColumn samp
  • 在套接字上多次调用listen——预期的行为?

    我在使用简单的基于 C 的服务器时注意到一些奇怪的事情 我的 Linux 4 10 3 系统上的程序 我不小心打通了电话listen 我在套接字上两次 来自服务器进程 被称为bind 早些时候 我注意到两个监听电话 成功 没有任何错误 事实
  • NSRulerView 如何将行号与正文正确对齐

    我在 MacOS 中使用 NSRulerView 来显示 NSTextView 旁边的行号 两个视图共享相同的字体和相同的字体大小 但是 在 NSTextView 中 字符串渲染是自动管理的 而在 NSRulerView 中 我需要计算正确
  • Symfony2 - 如何在控制器中使用 __construct() 并访问 Securty.Context?

    我在使用 Symfony2 时遇到了一些问题 即如何使用 construct 函数 官方文档非常糟糕 我希望能够使用以下内容 public function construct parent construct user this gt g
  • 修改Go GRPC服务器流拦截器上的元数据

    我一直在尝试在服务器流拦截器上设置元数据 以便实际的 RPC 函数可以在下游读取它们 func UserIDInterceptor srv interface ss grpc ServerStream info grpc StreamSer
  • 在 TestCafe 中测试运行期间累积所有 JS 警告和错误

    我希望能够在测试运行期间从浏览器控制台访问所有 J S 警告和错误 禁用 e 跳过 JS 错误 标志后 测试会在第一个错误处停止 因此显然它正在寻找它们 启用此标志后 我希望能够查看测试运行期间触发了哪些错误 最好是警告 我尝试过使用 Cl
  • 如何在没有请求正文的情况下发出 OKHTTP post 请求?

    有没有办法使用 OkHTTP 发出没有请求正文的 post 请求 RequestBody reqbody RequestBody create null new byte 0 Request Builder formBody new Req
  • 在 JavaScript 中等待不仅仅是将所有内容包装在 setTimeout 中

    因此 我正在创建一个机器人来在线玩视频游戏 完全合法 有一个用于机器人比赛的服务器 不用担心 代码是用 JavaScript 编写的 我现在刚刚开始学习 但我很难告诉机器人做某事 然后按时间或按条件等待 直到做其他事情 到目前为止 我只是将
  • OAuth2不同的客户端认证方式

    我有一个充当 OAuth 1 0a 提供商的 Web 服务 Web 应用程序通过 OAuth 1 工作流程来获取对用户资源的访问权限 到目前为止 一切都很好 客户端 Web 应用程序需要与服务进行通信以满足其他需求 以交换未链接到特定用户
  • 协助在我的本地主机应用程序上下载文件

    我有一个 ReactJS 网络应用程序 在其中一个页面上 我希望用户单击下载按钮 然后能够下载我的 pdf 文件assets文件夹 我在尝试执行此操作时似乎遇到了一些问题 这是我尝试过的 作为参考 我已经尝试过此中提出的解决方案questi
  • 从 Telegram 机器人获取用户的“Last Seen”?

    当我与 Telegram 用户聊天时 我可以看到每个用户的 最后一次见面 他们上次连接到 Telegram 的时间 即使我有一段时间没有与他们聊天 有没有办法通过机器人查询这些信息API https core telegram org bo
  • 已加载笔尖但未设置视图出口 - Swift 版

    我有一个项目 除了我的视图控制器是用 Swift 编写的之外 全部都是用 Objective C 编写的 当我运行它时 我收到错误 由于未捕获的异常而终止应用程序 NSInternalInconsistencyException 原因 UI
  • angular-ui-select2和breezejs:输入2个字符后加载ajax列表

    我有一个项目 我使用 BreezeJS 从我的网络服务器获取数据 我将 AngularJS 与 ui select2 模块一起使用 目前 当我加载页面时 breezejs 会调用以获取我转储到作用域变量中的数据 从那里 select2 可以
  • 自定义 Swing 组件:方法问题

    我正在尝试构建一个新的 java swing 组件 我意识到我也许能够在网络上找到一个可以满足我需要的组件 但这在一定程度上是我学习如何做到这一点的练习 我想构建一个代表甘特图的 swing 组件 这会很好 尽管人们能够与之交互并不是必需的
  • JRuby 1.7 上的 Rails 应用程序在 Nailgun 模式下无法启动

    我在 RVM 中安装了 JRuby 1 7 2 创建了 gemset 执行了捆绑安装 现在 我运行这个 Term 1 lzap lzapx my app bundle exec jruby ng serv NGServer started
  • Android Java 时间选择器对话框

    嘿 我正在尝试制作一个 TimepickerDialog 但当我按下 设置时间 按钮时 应用程序就崩溃了 这是代码 主要活动 package com wifitimer import java text DateFormat import
  • 有没有更好的方法让“std::tuple::operator==”从另一个命名空间利用“operator==”?

    我用的是Cstruct 我无法控制 并写了一个独立的operator 在命名空间中实现它 我还有另一个班级有 Cstruct作为会员 并且还拥有operator 执行 本来我有 include