我在浏览C++ Core Guidlines文档时偶然发现了以下示例:
关于最后一行代码,那个语法在特定页面上没有被提及,并且对我来说看起来非常陌生。经过几个小时的学习和投入,我发现这可能是一个标准库预定义的“用户定义”文字,并尝试找出这个特定文字是在哪里定义的,但是虽然 's' 与其他几个文字一起在 这里 提到,但我没有找到有关 'm' 的任何信息。Example
change_speed(double s); // bad: what does s signify? // ... change_speed(2.3);
A better approach is to be explicit about the meaning of the double (new speed or delta on old speed?) and the unit used:
change_speed(Speed s); // better: the meaning of s is specified // ... change_speed(2.3); // error: no unit change_speed(23m / 10s); // meters per second
We could have accepted a plain (unit-less) double as a delta, but that would have been error-prone.
还有 这里 在 SO 上的问题,但我认为那里的答案似乎已经完全过时了。 问:标准库预定义的用户定义文字“m”在哪里定义*?
* 甜蜜,美妙的头韵。
23m
不是标准库字面量,那它是什么?或者如果它是一个用户定义的字面量,但只是不是标准库的,为什么它可以没有下划线而被允许? - Tasos Papastylianou