gpt4 book ai didi

c++ - 用户定义的文字中是否允许使用 C++14 位分隔符?

转载 作者:IT老高 更新时间:2023-10-28 14:01:24 25 4
gpt4 key购买 nike

当 clang 编译以下行时,g++ 6.1 提示数字分隔符(参见 live example on Coliru):

auto time = 01'23s;

根据 C++14 标准 (N3796),哪个编译器(如果有)是正确的?

否则,允许数字分隔符(第 2.14.2 节)只是 <chrono> 的用户定义文字(第 2.14.8 节)中的实现细节图书馆(第 20.12.5.8 节)?恕我直言,不应该,因为这些文字是在 unsigned long long 上定义的。参数。

我记得 Howard Hinnant 使用 10'000s以他的CppCon 2016 talk "A <chrono> tutorial" 期间为例(在他的演讲中大约 42 分钟)。


(请注意,我不打算编码“1 分 23 秒”,这只是偶然正确,因为八进制文字 0123 是 64 + 16 + 3 == 83 . 为此我应该写

auto time = 1min + 23s;

但可能的误导性解释不是问题的一部分。)

最佳答案

如果看语法,user-defined-integer-literal可以是octal-literal ud-suffixoctal-literal 定义为 0octal-literal 'opt octal-digit

N4140 §2.14.8

user-defined-literal:

  • user-defined-integer-literal
  • [...]

user-defined-integer-literal:

  • octal-literal ud-suffix
  • [...]

N4140 §2.14.2

octal-literal:

  • 0
  • octal-literal ’opt octal-digit

所以 01'23s 是一个完全有效的文字。

关于c++ - 用户定义的文字中是否允许使用 C++14 位分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40262231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com