определенного пользователь буквальным трактуются как призыв к operator ""
X
(...)
где X
является идентификатором (например, _x
) и ...
зависит от формы определенного пользователя буквальным. Поиск соответствующего пользовательского литерального оператора затем выполняется в соответствии с обычными правилами для неквалифицированного поиска; [lex.ext]:
2 - это определенного пользователь-буквальный трактуются как призыв к буквальным оператору или буквальному шаблону оператора (13.5.8). Для того, чтобы определить форму этого вызова для данного определенного пользователя-буквальный L
с удами-суффикс X
, то буквального-оператором-идентификатор которого буквальным суффикс идентификатор X
ищутся в контексте L
, используя правила для поиска неквалифицированного имени (3.4.1). [...]
Определения _x
буквального только конфликт, если оба определения сделаны для неквалифицированного поиска по using
или using namespace
декларации или путем ввода либо пространства имен; конфликт является лишь проблематичным, если на самом деле делается вызов безоговорочному оператору.
{ using namespace X1; auto o = 5_x; } // OK; o is of type A
{ using namespace X2; auto o = 5_x; } // OK; o is of type B
{ using namespace X1; using namespace X2; } // OK; operator "" _x is not used
{ using namespace X1; using namespace X2; auto o = 5_x; } // ambiguous
Было бы также ОК, если _x
разные типы пользовательских литералов операторов например если один был оператором целых чисел, а другой - оператором с плавающей буквой.
Вы попробовали? – erenon
Нет, я не мог этого сделать в Visual C++, пока это не поддерживает. –
Я рекомендую использовать http://ideone.com/, http://coliru.stacked-crooked.com/ или что-то эквивалентное онлайн-компилятору. – erenon