読者です 読者をやめる 読者になる 読者になる

ユーザー定義リテラルよくわかんない

C++

N2800(Committee Draft)のユーザー定義リテラルのとこと
元になった提案のN2765に以下のような例があります。


13.5.8 パラグラフ8

void operator "" _km(long double); // OK

戻り値の型をvoidにできちゃっていいの?


あと、N2800には書いてないけど、N2765にはあるこれ

long double operator "" w(long double);
std::string operator "" w(char16_t const*, size_t);
unsigned    operator "" w(char const*);

int main() {
  1.2w;    // calls operator "" w(1.2L)
  u"one"w; // calls operator "" w(u"one", 3)
  12w;     // calls operator "" w("12")
  "two"w;  // Error: No applicable literal operator
}

main関数の3行目は何で

calls operator "" w(12)

ではなく

calls operator "" w("12")

なの?文字列の方が優先されるの?
それとも間違いだからN2800には書いてないの?



※ 追記:N2800にも書いてるみたい。