标准库预定义 'user-defined' 文字 "m" 在哪里定义?
Where is the standard library predefined 'user-defined' literal "m" defined?
我在浏览 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.
关于最后一行代码,该特定页面上没有提及该语法的含义,对我来说它看起来非常陌生。
几个小时后 浪费了 投入来弄清楚这可能是一个标准库预定义 'user-defined' 文字并了解更多关于它们的信息,我试图找出这个特定文字的位置已定义,但是虽然 's' 与其他一些文字一起被提及 here,但我没有找到关于 'm'.
的信息
SO 上也有 this 问题,但我认为那里的答案似乎已经完全过时了。
问:标准库预定义的用户定义文字"m"在哪里定义*?
* 甜甜的头韵。
这不是标准的用户定义文字
可以在底部的此处找到标准用户定义文字列表:http://en.cppreference.com/w/cpp/language/user_literal
而 operator""m
不是其中之一,因为标准库不处理长度单位(目前)。
我在浏览 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.
关于最后一行代码,该特定页面上没有提及该语法的含义,对我来说它看起来非常陌生。
几个小时后 浪费了 投入来弄清楚这可能是一个标准库预定义 'user-defined' 文字并了解更多关于它们的信息,我试图找出这个特定文字的位置已定义,但是虽然 's' 与其他一些文字一起被提及 here,但我没有找到关于 'm'.
SO 上也有 this 问题,但我认为那里的答案似乎已经完全过时了。
问:标准库预定义的用户定义文字"m"在哪里定义*?
* 甜甜的头韵。
这不是标准的用户定义文字
可以在底部的此处找到标准用户定义文字列表:http://en.cppreference.com/w/cpp/language/user_literal
而 operator""m
不是其中之一,因为标准库不处理长度单位(目前)。