Определяемые пользователем суффиксы пользовательских операторов литералов должны начинаться с подчеркивания, за которым следует одна или несколько букв
Определяемые пользователем суффиксы пользовательских операторов литералов должны начинаться с подчеркивания, за которым следует одна или несколько букв.
Начиная с C++ 11, можно добавить суффиксы к литералам, которые преобразуют числовые значения под капотом. Например, в коде, где вы выполняете все вычисления в общем модуле, можно оставить преобразование модулей измерения в выделенные операторы и просто использовать буквальные суффиксы для модулей при определении постоянных значений.
В этом примере буквальные суффиксы _m
и _km
решает, чтобы вызовы к operator"" _m()
и operator"" _km()
соответственно. Операторы обеспечивают преобразование всех значений в один модуль.
constexpr long double operator"" _m(long double metres) { return metres; } constexpr long double operator"" _km(long double kilometres) { return 1000*kilometres; } ... long double minSteps = 100.0_m; long double interCityDist = 100.0_km;
Определяемые пользователем буквальные суффиксы должны начинаться с подчеркивания (_
). Буквальные суффиксы, не начинающиеся с подчеркивания, зарезервированы для стандартной библиотеки.
Проверяющие правила флаги определений формы:
operator "" suffix
suffix
не начинается с подчеркивания или после подчеркивания, содержит символы, отличные от букв (цифры, специальные символы и так далее).Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Перегрузка |
Категория: Необходимый, Автоматизированный |