c++ - Are C++14 digit separators allowed in user defined literals? -
while clang compiles following line, g++ 6.1 complains digit separator (see live example on coliru):
auto time = 01'23s; which compiler, if any, correct according c++14 standard (n3796)?
otherwise, allowing digit separators (§2.14.2) implementation detail in user-defined literals (§2.14.8) of <chrono> library (§20.12.5.8)? imho should not, since these literals defined on unsigned long long parameters.
i remember howard hinnant using 10'000s example during cppcon 2016 talk "a <chrono> tutorial" (at 42 minutes in talk).
(please note, did not intend code "1 minute , 23 seconds", only correct accident, since octal literal 0123 64 + 16 + 3 == 83. purpose should write
auto time = 1min + 23s; but possible misleading interpretation not part of question.)
if @ grammar, user-defined-integer-literal can octal-literal ud-suffix, , octal-literal defined either 0 or octal-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
so 01'23s valid literal.
Comments
Post a Comment