c++0x 中用户定义文字的重载规则

2024-04-02

我对超载规则有点困惑,

假设有以下文字运算符,

unsigned long long operator "" _xx(unsigned long long cooked_literal_int); //1
unsigned long long operator "" _xx(const char * raw_literal_string); // 2
unsigned long long operator "" _xx(long double cooked_literal_double); // 3

如果同时定义了 1、2 和 3,则重载是显而易见的,

13_xx //call 1
13.5_xx //call 3

如果定义了 1 和 2,

13_xx //call 1
13.5_xx //call 2

如果定义了 2 和 3

13_xx // call 2 or 3??
13.5_xx // call 3

混乱来自最新的 c++0x 标准 n3225 2.14.8/3,

如果 L 是用户定义的整数文字,则令 n 为不带 ud 后缀的文字。如果 S 包含参数类型为 unsigned long long 的文字运算符,则文字 L 被视为以下形式的调用

运算符 "" X (n ULL)

否则,S 应包含原始文字运算符或文字运算符模板 (13.5.8),但不能同时包含两者。如果 S 包含原始文字运算符,则文字 L 被视为以下形式的调用

运算符“”X(“n”)

否则(S 包含文字运算符模板),L 被视为以下形式的调用

运算符 "" X ()

其中 n 是源字符序列 c1c2...ck。

这表示,如果存在 1(无符号 long long 参数),则 13_xx 应调用 1,否则,13_xx 应调用 2。从 13.5.8 开始,

特别是,它们像普通函数和函数模板一样查找 并且它们遵循相同的重载解析规则。

根据我的理解,如果 1 不存在,13_xx 可以隐式转换为 double 并调用 3。

因此,如果 1 不存在,则根据标准描述,2 和 3 在某种程度上都是有效的。

我希望有人能帮我解答我的疑惑。非常感谢。


我相信 13.5.8/7 澄清了这个问题:

注意:文字运算符和文字 通常会调用运算符模板 通过用户定义隐式 文字 (2.14.8)。然而,除了 上述限制条件, 他们 是普通的命名空间范围函数 和函数模板。尤其, 他们像普通人一样受到尊敬 函数和函数模板以及 他们遵循相同的超载 决议规则。

根据我的理解,常规重载解析规则仅在调用时隐含于文字运算符outside通过用户定义的文字进行隐式调用。

所以我认为如果定义了2和3,13_xx调用 2(原始文字运算符)。

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

c++0x 中用户定义文字的重载规则 的相关文章

  • 将列表数组中的值绑定到列表框

    任何机构都可以给出一个简短的示例 用于将列表数组中的值绑定到 c net 中的列表框 这取决于您的列表数组的情况 让我们从一个简单的示例开始 List
  • 沿着长数据序列在固定大小的移动窗口中查找中值

    给定一个数据序列 可能有重复项 一个固定大小的移动 窗口 从数据开始处每次迭代时移动窗口 序列 使得 1 从窗口中删除最旧的数据元素并添加新数据 元素被推入窗口 2 求每次移动时窗口内数据的中位数 以下帖子没有帮助 有效地找到随机序列的中值
  • MVC 中的 Blazor:组件被渲染,但 @onclick 不起作用。连接问题

    我正在尝试在 net core 3 MVC 项目中使用 Blazor 我使用了一些教程来做到这一点 例如https fizzylogic nl 2019 08 18 integrating blazor in an existing asp
  • 为什么不能使用initializer_list来初始化unique_ptr的向量? [复制]

    这个问题在这里已经有答案了 我想知道为什么initializer list 不能与unique ptr 一起使用 std vector
  • 无法在表适配器配置属性中找到对象“Web.config”的连接“MyConnName”

    I want to change the query in table adapter but it s not opening throwing an error Configure table Adapter Failed in pro
  • 不能使用函数名称距离

    以下代码可以正常编译 include
  • 如何自定义 ASP.Net Core 模型绑定错误?

    我只想从我的 Web API Asp net Core 2 1 返回标准化的错误响应 但我似乎不知道如何处理模型绑定错误 该项目刚刚从 ASP NET Core Web 应用程序 gt API 模板创建 我有一个简单的操作定义为 Route
  • 如何(可移植地)在 C 和 C++ 中获取 DBL_EPSILON

    我正在 Linux AS 3 上使用 GCC 3 4 并试图找出DBL EPSILON 或者至少是一个不错的近似值 我怎样才能以编程方式获取它 在 C 中是std numeric limits
  • 二维数组的列求和

    我有一个IEnumerable
  • Docker 不遵循构建目录中的符号链接

    我正在对一个应用程序进行 Docker 化 其中涉及通过 Clang 将二进制文件与其他 C 文件链接 我们维护二进制文件的符号链接版本 因为它们在整个代码库中使用 我的 Docker 构建目录包含整个代码库 包括源文件以及这些源文件的符号
  • 在 OpenGL 中使用不同的着色器程序?

    我必须在 OpenGL 中针对不同的对象使用两个不同的着色器程序 我发现我必须使用glUseProgram 在不同的着色器程序之间切换 但对此没有太多信息 鉴于我有两个用于不同对象的不同着色器程序 如何为每个着色器程序生成和绑定 VAO 和
  • Ajax 函数在重定向后不保存滚动位置

    正如标题所述 我编写了一个 ajax 函数 该函数应该滚动到用户在重定向之前所在的位置 我写了一个alert对于测试场景 它确实触发了 但滚动不断回到顶部 我在这里做错了什么 JavaScript ajax type GET url Adm
  • C++ 中类型信息何时向后流动?

    我刚刚看了 Stephan T Lavavej 的演讲CppCon 2018关于 类模板参数推导 在哪里某个点 https youtu be H ut6j1BYU t 941他顺便说 在 C 中 类型信息几乎永远不会向后流动 我不得不说 几
  • 如何将对 System.Data.DataSetExtensions 的引用添加到网站 ascx.cs 文件?

    我们正在处理一个网站项目并尝试参考System Data DataSetExtensions 使用 Web 应用程序会更好 不过 技术主管有她的理由 这是我们尝试过的 找到装配路径 打开 Visual Studio 命令提示符并运行sn e
  • 函数中的重复参数检查

    我经常有调用层次结构 因为所有方法都需要相同的参数 如果我不想将它们放在实例级别 类的成员 那么我总是问我在每个方法中检查它们的有效性是否有意义 例如 public void MethodA object o if null o throw
  • 不兼容的指针到字符转换

    我正在编写一个程序 将卡片值写入 52 个点字符的多维数组中 该程序是一个测试数组 稍后我将其作为函数写入主程序中 在程序中 我通过以下方式初始化 for 循环计数0通过51 我用一个switch语句调制13将卡牌值分配给数组点 但是 我收
  • 在标准 C 中将 int 转换为 string

    我是 C 新手 我正在寻找一个可以调用函数进行转换的示例int串起来 我发现itoa但这不是标准 C 的一部分 我还发现sprintf str d aInt 但问题是我不知道所需的 str 的大小 因此 我如何传递输出字符串的正确大小 有多
  • 使texture2D在运行时/脚本Unity3D中可读[重复]

    这个问题在这里已经有答案了 我有一个插件 可以让我访问 Android 手机图库中的图片 这给了我一个Texture2D类型的纹理 然后我想使用 GetPixels 函数对其进行编辑 但默认情况下它未设置为可读 如何使纹理可读 以便我可以在
  • WPF DataGrid 选定项

    我有一个 DataGrid 用户可以通过在最后一行输入数据来添加项目 我还有一个按钮可以删除当前选定的项目 但是 当选择最后一行 空 用于添加新项目 时 最后选定的项目将保留在 SelectedItem 中 因此 如果我打开窗口 选择最后一
  • 使用 Crypto++ 和 .NET 的 CFB 模式下的 TripleDES

    我正在尝试使用 TripleDES 使用 C 应用程序获得相同的结果 该应用程序具有Crypto https www cryptopp com 和 NET应用程序使用三重DESCryptoServiceProvider https msdn

随机推荐

  • 使用 NSURLSession 设置 cookie

    您好 我正在开发一个 Iphone 应用程序 我想在服务器响应后设置 cookie 并将其用于另一个请求 我的网络请求看起来像 NSURLSession session NSURLSession sharedSession session
  • 错误“[ShareSheet] 连接无效”错误 iOS13+ 但不在 iOS 11.4 上

    我想使用共享表共享一个文件 并且编写的代码似乎工作得很好 但是我不断在日志中看到这些错误消息 使用 Xcode 11 3 ShareSheet connection invalidated 我正在测试两个物理设备 运行 iOS 13 1 2
  • 如何使用命令行删除 Git 上的存储库? [复制]

    这个问题在这里已经有答案了 可能的重复 如何完全删除使用init创建的git存储库 https stackoverflow com questions 1213430 how to fully delete a git repository
  • 为 Spotlight 元数据查询配置 NSPredicateEditor(RowTemplate)I'

    我正在尝试配置一个NSPredicateEditor 在 Interface Builder 中 编辑谓词NSMetadataQuery 作为第一步 我尝试配置一个NSPredicateEditorRowTemplate接受左侧表达式的关键
  • 如何修复 Windows Phone 8 Phonegap 应用程序的方向?

    有谁知道如何修复 Windows Phone 8 Phonegap 应用程序中的方向 我希望该应用程序仅支持纵向 接受的答案不正确 正确答案是 打开 主页 xaml 并将其更改为您想要的方向 minie 是纵向 SupportedOrien
  • 为什么 int[] a = new int[0];允许吗?

    有没有理由 int myArray new int 0 编译 这样的表达有什么用处吗 myArray 0 1 gives java lang ArrayIndexOutOfBoundsException if myArray null Sy
  • 使用 WebtestClient 测试 MultipartFile

    我正在为我的控制器类编写单元测试 我正在使用 spring webflux 因此我正在编写测试WebTestClient 这是我的控制器方法 PutMapping updatedocument documentType public Res
  • iPhone SQLite DB 和基于 Web 的 DB 同步和交互建议

    我正在开发我的第二个 iPhone 应用程序 并且正在寻找有关数据库处理的架构建议 这个想法是 1 信息数据库存储在服务器 LAMP 堆栈 上 信息通过 JSON 传递到设备 该部分已实施 用户可以 收藏 数据库中的某个项目 该项目将其存储
  • 使用Intent打开系统应用程序

    我正在尝试制作一个简单的应用程序 当用户从主屏幕或应用程序抽屉单击时 该应用程序会将用户发送到特定的 系统安装的 应用程序 系统设置 日历 浏览器等 例如 我目前尝试在启动应用程序时打开系统设置 就像设置快捷方式一样 可以按照我想要的方式实
  • RStudio 中的永久代码折叠

    我试图确保在保存文件时 在 RStudio 中崩溃的代码 通过 Alt L 在 Shiny 中保持在原位 目前 每次我保存文件时 折叠都会消失 有谁知道如何使折叠永久且独立于保存文件 供参考 我在 Windows 上使用 RStudio 0
  • 使用cmd获取当前用户路径变量而不使用系统路径

    当我使用标准用户 也是管理员 登录时 命令echo PATH 返回系统路径 用户路径 如何只获取用户的路径 例如 当我当前用户的路径是C ruby C java bin系统路径是 SystemRoot system32 SystemRoot
  • 如何使文本浮动在列表项空间的底部?

    如何使文本浮动在列表项空间的底部 我试图使 li 中的所有文本都位于 li 高度的底部 有没有更好的方法来实现这种外观 以及如何超链接 h1 标题 margin 0 padding 0 nav width 100 height 110px
  • 如何在 Internet Explorer 中使用 html 子元素获取 contenteditable div 中的插入符位置

    我正在使用一个 contenteditable div 它可以选择包含内联 html 元素 例如标签 在文本流中 在某些时候 我需要抓取 contenteditable div 的插入符位置 光标位置 插入符 光标 位于 html 子元素之
  • Angular - 错误:spawn cmd ENOENT

    您好 当我生成角度时遇到问题 哟角度 我都完成了 运行 Bower install 和 npm install 来安装所需的依赖项 如果失败 请尝试自己运行该命令 调用角度 路线 调用 Angular Controller C Users
  • 在每个时间间隔更改文本 - React

    我试图在反应的每个时间间隔更改文本 屏幕出现时自动开始 但问题是 给定的时间不被尊重 并且文本以随机时间间隔更改 这是我的代码的一部分 const names tony elias fadi const newName setnewName
  • 在 php 中将 emoji 字符转换为 Unicode 代码点数字

    我正在尝试使用 php 将表情符号转换为 unicode 更多信息 https unicode org emoji charts full emoji list html https unicode org emoji charts ful
  • symfony 2 twig 访问数组 javascript 索引

    是否可以从中获取对象twig数组知道索引是ajavascript多变的 我的控制器 public function showContactModalAction iduser profil em this gt getDoctrine gt
  • 如何在 Electron BrowserWindow 中查看 PDF?

    所以我有这个 Electron 应用程序 在一个 html 文件中 我链接了另一个脚本 该脚本为程序提供了一些实用功能 其中之一是 function openPDF filePath let pdfWindow new electron r
  • Logstash 的 Java 过滤器

    你知道 Logstash 有一个 Ruby 过滤器 它使我能够用 Ruby 编写代码 它通常包含在配置文件中 如下所示 filter ruby code gt 现在我有两个 Jar 文件 我想将它们包含在过滤器中 以便可以根据我在这些 Ja
  • c++0x 中用户定义文字的重载规则

    我对超载规则有点困惑 假设有以下文字运算符 unsigned long long operator xx unsigned long long cooked literal int 1 unsigned long long operator