Я знаю, что это старая функция, но читаемая на пользовательских литералах, например.
return_t operator "" _a(long); // Literal operator for user-defined INTEGRAL literal
Мне напомнили, что
требуется верхнее подчеркивание. (Только стандартная библиотека может определять литералы без подчеркивания.) (A)
Это, похоже, нарушает шаблон, поскольку до сих пор реализация работала с именами underscorey и оставила нам хорошие, например зарезервированные для реализации, имена, которые
- Содержит двойной символ подчеркивания
- Начните с символа подчеркивания, за которым следует заглавная буква
Кроме того, цитата (A) несколько опасна при наличии правила (2). Итак, почему непоследовательность?