Я наткнулся на следующий пример, просматривая Основные рекомендации C++ а> документ:
Пример
change_speed(double s); // bad: what does s signify? // ... change_speed(2.3);
Лучший подход состоит в том, чтобы четко указать значение двойного числа (новая скорость или дельта на старой скорости?) и используемую единицу измерения:
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
Мы могли бы принять простое (безразмерное) значение double в качестве дельты, но это было бы подвержено ошибкам.
Что касается этой последней строки кода, то на этой конкретной странице не было упоминания о том, что означает этот синтаксис, и он выглядел совершенно чуждым для меня.
После нескольких часов, потраченных впустую, потраченных на выяснение того, что это, вероятно, стандартная библиотека, предопределенный литерал «определяемый пользователем», и узнать о них больше, я попытался выяснить, где определен этот конкретный литерал, но в то время как 's' упоминается здесь вместе с несколькими другими литералами, я не нашел информация о «м».
На SO также есть этот вопрос, но я думаю, что ответы там кажутся совершенно устаревшими.
Вопрос. Где находится стандартный пользовательский литерал "m", заданный* в стандартной библиотеке?
* Милая, милая аллитерация.