标准库预定义的“用户定义”字面量“m”在哪里定义?

3

我在浏览C++ Core Guidlines文档时偶然发现了以下示例:

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.

关于最后一行代码,那个语法在特定页面上没有被提及,并且对我来说看起来非常陌生。经过几个小时的学习和投入,我发现这可能是一个标准库预定义的“用户定义”文字,并尝试找出这个特定文字是在哪里定义的,但是虽然 's' 与其他几个文字一起在 这里 提到,但我没有找到有关 'm' 的任何信息。
还有 这里 在 SO 上的问题,但我认为那里的答案似乎已经完全过时了。 问:标准库预定义的用户定义文字“m”在哪里定义*?

* 甜蜜,美妙的头韵。

1个回答

5

谢谢Fatih。实际上我已经在问题中链接到了那个链接 :) 所以如果23m不是标准库字面量,那它是什么?或者如果它是一个用户定义的字面量,但只是不是标准库的,为什么它可以没有下划线而被允许? - Tasos Papastylianou
还是你只是在说Bjarne可能发明了一个字面量,但它还没有出现在标准库中,只是为了那个例子的目的? - Tasos Papastylianou
2
@TasosPapastylianou,事实上Bjarne喜欢创造一些功能,以便一些示例更清晰(例如在他的C++11/14书中使用范围)。正如你所说,它不允许在没有下划线的情况下使用。因此,在我们获得标准长度单位之前,该代码是不合法的。 - Fatih BAKIR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接