Согласно проекту C ++ от 11 февраля 2011 г. § 2.14.8, пользовательские литеральные типы - это целочисленные литералы, плавающие литералы, строковые литералы и символьные литералы. Нет способа сделать функционально-литеральный тип.
Пользовательский литерал обрабатывается как вызов литерального оператора или
шаблон буквального оператора (13.5.8). Чтобы определить форму этого звонка
для заданного пользователем литерала L с UD-суффиксом X,
ищется литеральный идентификатор оператора, чей буквенный идентификатор суффикса X
в контексте L, используя правила для поиска безоговорочного имени
(3.4.1). Пусть S будет набором объявлений, найденных этим поиском. S
не должно быть пустым.
Целые числа:
operator "" X (n ULL)
operator "" X ("n")
operator "" X <’c1’, ’c2’, ... ’ck’>()
Плавающий:
operator "" X (f L)
operator "" X ("f")
operator "" X <’c1’, ’c2’, ... ’ck’>()
Строка:
operator "" X (str, len)
operator "" X <’c1’, ’c2’, ... ’ck’>() //unoffcial, a rumored GCC extension
Характер:
operator "" X (ch)